首页 > 编程语言 >C++ 小节3

C++ 小节3

时间:2024-08-16 19:58:17浏览次数:15  
标签:函数 继承 子类 小节 C++ 析构 父类 构造函数

1、析构函数相关

1.析构函数:函数名与类名相同,前面有~,没有返回值,不能写void,没有参数;只能有一个,不能重载
2.析构函数的作用:主要在对象销毁时释放申请的堆内存,关闭文件,关闭网络连接,关闭数据库连接等;
3.析构函数的执行:(不显式调用,自动执行)1) 作用域到了时自动执行析构函数 2) delete,delete[]时自动执行析构函数

2、构造函数和析构函数的执行顺序

1.构造的顺序:
    1) 先构造其它类的对象;按对象的声明顺序构造,先声明的先构造,后声明的后构造
    2) 再执行本类构造;先执行初始化列表,再执行本类构造函数内部
2.析构函数执行顺序:
    与构造顺序相反;

3、拷贝构造相关

1.拷贝构造函数:函数名与类名相同,没有返回值,不能写void,参数为本类对象的引用,常引用作参数的拷贝构造函数更通用,拷贝构造函数可以重载
2.拷贝构造函数的执行:1).把初始化对象为未初始化对象赋值时,自动调用拷贝构造函数 2).把实参对象拷贝给形参对象时,自动调用拷贝构造函数;
3.拷贝构造函数的作用:用已初始化对象的值为对象初始化

4、友元相关

1.友元:
1) 把一般函数定义为类的友元函数,则此函数能够访问类的所有成员
2) 把某类的成员函数设置为另一个类的友元函数,则此函数能够访问这个类的所有成员
3) 把某类设置另1个类的友元类,则这个类的所有成员函数都能直接访问另一个类的所有成员
2. 友元主要用于突破私有限制,但会破坏类的封装性;

5、内部类相关

1.内部类:在类中定义的类
2.内部类的访问特性:因为内部类作为外部类的一个成员,所以内部类可以直接访问外部类的所有成员,但外部类不能直接访问内部类的所有成员
3.局部类:定义在某函数内或某代码块内的类,有效范围只在局部

6、继承相关

1.继承的格式:
    class 子类 : 继承类型 父类
    {
     子类成员访问权限:
              子类数据成员;
              子类成员函数;
    };
2. C++继承的优势: 1) 最大化提高代码的重用性 2)最快建立框架(做子类时只要关心子类比父类更多的属性和动作)
3. 继承的内容: 子类继承父类的一般数据成员和成员函数,但不能继承父类的private私有成员、不能继承的构造函数、拷贝构造函数、析构函数、=操作符重载,但可以被子类复用;
4. C++支持多继承;
5.子类构造的顺序:
    1) 先按父类的继承顺序构造父类
    2)按类内对象的声明顺序构造其它类的对象,先声明的先构造,后声明的后构造
    3) 再执行本类构造;先执行初始化列表,再执行本类构造函数内部
6.析构函数执行顺序:
    与构造顺序相反;
7. 继承类型:public,protected,private;
8. 父类private成员不能被子类继承;
9. public继承时,父类访问权限在子类不变;
10. protected继承时,父类访问权限在子类都变成protected;
11. private继承时,父类访问权限在子类都变成private;

7、抽象类相关

1.抽象类:含有纯虚函数的类;
2.纯虚函数:虚函数的形参列表右边=0;
3.抽象类的特性:只能声明指针或引用,不能创建对象;
4.抽象类的作用:制定框架(接口),只说明有此动作,动作的具体实现由子类完成。
5.抽象类的使用:由子类全部实现父类的所有纯虚函数,才能创建对象

8、菱形继承问题

1.C++多继承的问题:
1)菱形继承问题: 解决办法:1)虚继承 2)使用类域指定使用哪个类的成员;
2)V形继承问题: 1)使用类域指定使用哪个类的成员;

标签:函数,继承,子类,小节,C++,析构,父类,构造函数
From: https://blog.csdn.net/Echo_HY/article/details/141140006

相关文章

  • C/C++内存管理
    文章目录前言C/C++内存分布C语言内存管理malloccallocreallocreallocarrayfreeC++内存管理new/delete内置类型自定义类型operatornew/operatordelete定位new内存泄漏前言        C++的内存管理是程序设计中的一个关键部分,涉及到内存的分配、使用和释......
  • 数据结构(C++版)——顺序表
    一、顺序表有关的基本操作1、InitList(&L):初始化线性表,构造一个空的线性表L2、DestroyList(&L):销毁线性表L3、ClearList(&L):将线性表L重置为空表4、ListEmpty(L):若L为空表,则返回TURE,否则返回FALSE5、GetElem(L,i,&e):用e返回L中第i个数据元素的值6、LocateElem(L,e):在线性......
  • C++八股文——内存管理(堆和栈的区别? C++内存分区? 内存泄漏?如何避免?什么是智能指针?有哪
    文章目录C++内存管理堆和栈的区别C++内存分区内存泄漏?如何避免?1、什么是内存泄露?2、内存泄漏的分类3、什么操作会导致内存泄露?4、如何防⽌内存泄露?5、智能指针有了解哪些?6、构造函数,析构函数要设为虚函数吗,为什么?什么是智能指针?有哪些种类?new和malloc有什么区别?d......
  • C++智能指针讨论
    一段有问题的代码。#include<iostream>intmain(){for(inti=0;i<10000000;i++){double*p=newdouble(1);}return0;}这里就有了内存泄漏。修改为下边的代码,是可以的,但是会比较占用CPU资源。#include<iostream>intmain()......
  • C++速览之智能指针
    1、存在的问题c++把内存的控制权对程序员开放,让程序显式的控制内存,这样能够快速的定位到占用的内存,完成释放的工作。但是此举经常会引发一些问题,比如忘记释放内存。由于内存没有得到及时的回收、重复利用,所以在一些c++程序中,常会遇到程序突然退出、占用内存越来越多,最后不......
  • C++ Debug
    如果右上角没有runanddebugbutton记得把setting里IntelliSenseEngine改成default,以及DebugShortcut打开如果cpp文件提示headernotfound,那需要在c_cpp_properties.json中把compilerPath,添加上debug的时候,默认他好像是会自动build的,当然也可以自己写p......
  • C++构造和析构
    文章目录一、构造函数1、构造函数的功能2、构造函数的创建3、默认构造函数二、析构函数1、析构函数的功能2、析构函数的的创建三、拷贝构造函数1、拷贝构造的功能2、拷贝构造的创建3、深拷贝一、构造函数1、构造函数的功能构造函数是一个类的成员函数,在类创......
  • C++图像识别、图像识别接口、ocr api
    如果您在找工作并且在找内容审核编辑的工作,那么不难发现,快手在全国多个招聘网站发布了关于“内容审核编辑”岗位的招聘信息,据悉,此次的“内容审核编辑”岗位招聘的规模达3000人。因为快手上面“低龄妈妈”内容的炒作,所以被要求整改,才有后续的大规模招聘内容审核编辑人员的现象......
  • 【C++的剃刀】我不允许你还不会map和set
     ​ 学习编程就得循环渐进,扎实基础,勿在浮沙筑高台   循环渐进Forward-CSDN博客Hello,这里是kiki,今天继续更新C++部分,我们继续来扩充我们的知识面,我希望能努力把抽象繁多的知识讲的生动又通俗易懂,今天要讲的是C++的map和set~目录 循环渐进Forward-CSDN博客关......
  • C/C++算法概述
    摘要1.性能优势:C/C++语言以其接近硬件的特性而著称,提供了对底层硬件的直接控制能力。这意味着算法可以实现更高的执行效率,特别是在需要处理大量数据或实时性能要求较高的场景中。2.灵活性:C/C++提供了丰富的数据结构和操作,允许开发者以灵活的方式实现复杂的算法。同时,C++的......