0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C++学习笔记(一)

CHANBAEK 来源:小二电路 作者:小二电路 2023-03-07 15:54 次阅读

本篇文章为本人学习C++过程中记录的学习笔记,看的是哔站黑马程序员视频,本人觉得讲的非常棒,感兴趣的可以看看,以下内容欢迎大家阅读和批评指正。

1、指针系列:

(1)① 常量指针 :const int *P; (const修饰指针)

特点:指针的指向可以更改,但是指向的值不可以更改。

指针常量 :int * const P; (const修饰常量)

特点:指针的指向不可以更改,但是指向的值可以更改。

const既修饰指针,又修饰常量的: const int * const p;

特点:指向的值都不能发生改变。

(2) this指针 :本质是指针常量。

2、 静态成员

(1)静态成员变量 :所有对象共享这一样的数据、类内声明,类外初始化;

(2)静态成员函数 :所有对象共享一个函数、静态成员函数只能访问静态成员变量。

3、多态:

看如下代码:

#include
using namespace std;
class Father
{
public:
void func()
{
    cout << "调用父类成员func()函数成功!" << endl;
}
};
class Son:public Father
{
public:
void func()
{
    cout << "调用子类成员func()函数成功!" << endl;
}
};
void test(Father& f)
{
    f.func();
}
int main()
{
   Son s1;
   test(s1);
}

这个程序的执行结果是:调用父类成员func()函数成功!

为了能够输出“调用子类成员func()函数成功! ”,解决办法就是用虚函数,在父类Father的func函数前加个virtual。

得注意以下几点:①如果是这样test(Father* f),指针和引用是一样的; ②发生这种动态多态,必须得有继承关系; ③子类重写父类的虚函数,子类加不加virtual都可以( 一般不加,好区分 )。

(1) 纯虚函数与抽象类

class Father
{
  Public: virtual void func() = 0;
};

上述代码中,函数func直接=0,表示纯虚函数,含有纯虚函数的类教抽象类。 其派生类必须对函数func进行重写实例化,不然也是抽象类。 也就是说,Father s; 编译会报错。

和虚函数差不多,一般写成纯虚函数的都是为了不让其代码实现,而是让子类实现。

(4) 虚析构和纯虚析构 :(解决的同一个问题,方法不同)

多态在使用的时候,如果子类中有属性开辟到了堆区,那么父类指针在释放空间时无法调用到子类的析构代码,应该如何解决?

注:父类的指针在析构的时候,不会调用子类的析构函数。 导致,如果有子类堆区属性,会出现内存泄漏,也就是delete不了。

解决方法:在父类的析构函数前加上virtual关键字即可。

如果采用的是纯虚析构的话,virtual ~Father()=0;但是,还得在类外初始化一下才行。 Father::~Father(){}

注:有了纯虚析构的类也是抽象类,无法实例化对象。

(5) 多态性:同一个操作可以是不同对象的行为

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4233

    浏览量

    61952
  • 指针
    +关注

    关注

    1

    文章

    475

    浏览量

    70457
  • C++
    C++
    +关注

    关注

    21

    文章

    2084

    浏览量

    73294
  • 代码
    +关注

    关注

    30

    文章

    4665

    浏览量

    67743
  • 编译
    +关注

    关注

    0

    文章

    645

    浏览量

    32659
收藏 人收藏

    评论

    相关推荐

    学习C++

    有意学习C++的朋友,可以加QQ群383309549,完全公益,免费授课,本群只接受没有程序设计经验、想学习C++程序设计的朋友哟!!{:1:}
    发表于 07-29 21:51

    C++笔记003:C++个小程序开始

    ` 本帖最后由 tyyhmtyyhm 于 2018-5-12 09:37 编辑 笔记三:从个小程序开始安装好VS2010后,从第个小程序开始。在学习
    发表于 03-05 12:51

    学习c++的经验分享!

    转自:http://www.cndzz.com/download/4094_0/111678.html 学习学好c++的50条忠告1.把C++当成门新的语言
    发表于 10-08 03:46

    如何学习C++,如何学好C++

    最近,很多学员都给我发邮件问我应该如何学习C++,如何学好C++?那么作为个从C语言小白摸爬滚打、入坑无数到成长为如今的高级
    发表于 08-20 06:27

    学习C++的方法以及C++的就业方向

    学习方向:嵌入式+人工智能嵌入式是门技术学习目标1.嵌入式开发概述;(面向对象在嵌入式开发中角色)2.嵌入式Linux C++编程;(C++
    发表于 12-24 07:32

    在main文件中怎样去使用C++

    ESP32 之 ESP-IDF 学习笔记(五 - 2)【使用C++的工程】文章目录ESP32 之 ESP-IDF 学习笔记(五 - 2)【使
    发表于 01-07 07:44

    CC++学习过程总结

      总是被同学们问到,如何学习CC++才不茫然,才不是乱学,想了下,这里给出个总的回复。   
    发表于 09-10 11:42 1230次阅读

    C++语言学习提纲

    C++语言学习提纲
    发表于 12-30 14:50 0次下载

    C++“指针”学习建议

    C++“指针”学习建议
    发表于 03-31 15:53 3次下载

    C++指针的学习建议

     。对于众多人提出的c/c++中指针难学的问题做个总结:
    发表于 11-07 17:13 8次下载
    <b class='flag-5'>C++</b>指针的<b class='flag-5'>学习</b>建议

    Linux C/C++ 学习路线

    、秋招 Linux C/C++ offer 情况二、Linux C/C++ 方向的些思考三、
    发表于 11-06 19:36 14次下载
    Linux <b class='flag-5'>C</b>/<b class='flag-5'>C++</b> <b class='flag-5'>学习</b>路线

    C语言和STM32学习学习笔记

    自己总结的C语言和STM32F1学习笔记,适合想快速了解学习
    发表于 03-24 14:53 36次下载

    C++学习笔记c++的基本认识

    自这篇文章我们即将开始C++的奇幻之旅,其内容主要是读C++ Primer的总结和笔记,有兴趣可以找原版书看看,对于学习C++还是有很大帮助
    的头像 发表于 03-17 13:57 623次阅读

    C++学习笔记之顺序容器

    C++中的顺序容器是种用于存储和管理元素序列的数据结构。它们提供了组有序的元素,并支持在序列的任意位置插入和删除元素。C++标准库中提供了多种顺序容器,包括vector、deque
    的头像 发表于 05-11 17:05 501次阅读

    C/C++语言学习大全套

    电子发烧友网站提供《C/C++语言学习大全套.rar》资料免费下载
    发表于 11-18 14:33 2次下载
    <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>语言<b class='flag-5'>学习</b>大全套