派生类的构造复制与析构
派生类的析构函数
- 析构函数和构造函数一样不被继承,派生类如果需要,要自行声明析构函数
- 声明方法与无继承关系时类的析构函数相同
- 不需要显式地调用基类的析构函数,系统会自动隐式调用
- 先执行派生类析构函数的函数体,再调用基类的析构函数
派生类的复制函数
- 一般都要为基类的复制构造函数传递参数。
- 复制构造函数只能接受一个参数,既用来初始化派生类定义的成员,也将被传递给基类的复制构造函数。
- 基类的复制构造函数形参类型是基类对象的引用,实参可以是派生类对象的引用
- 例如: C::C(const C &c1): B(c1) {…}
- 如果派生类未定义复制构造函数,那么编译器会先生成一个隐含的复制构造函数,先调用基类的复制构造函数,再为派生类新增的成员执行复制
没有什么新的知识点,具体看程序
#include<iostream>
using namespace std;
class Base1
{ public:Base1(int x) { printf("now Base1: %d\n", x); }~Base1() { printf("DisBase1\n"); }
};
class Base2
{ public:Base2(int x) { printf("now Base2: %d\n", x); }~Base2() { printf("DisBase2\n"); }
};
class Base3
{ public:Base3() { printf("now Base1: *\n"); }~Base3() { printf("DisBase*\n"); }
};class Text: public Base2, public Base1, public Base3
{public: //↓顺序:先初始化基类,再初始化组合,并且都按照声明顺序初始化,而非按照初始化列表顺序Text(int a, int b, int c, int d): Base1(a), X(d), Y(c), Base2(b) {} //没有出现在初始化列表里的基类采用默认构造private: //↑所以上面顺序是:Base2(b), Base1(a), X(d), Y(c);Base1 X;Base2 Y;Base3 Z;
};int main(void)
{Text k(1, 2, 3, 4);return 0;
}
/*
输出结果:
now Base2: 2
now Base1: 1
now Base1: *
now Base1: 4
now Base2: 3
now Base1: *
DisBase*
DisBase2
DisBase1
DisBase*
DisBase1
DisBase2↑从上可以看出,析构顺序和构造顺序正好相反
*/
派生类的构造复制与析构相关推荐
- Part7 继承与派生 7.4派生类的构造和析构
1派生类的构造函数 默认情况下:基类的构造函数不被继承,派生类需要定义自己的构造函数. C++11 规定:可用using语句继承基类构造函数.但是只能初始化从基类继承的成员.这时派生类新增成员可以通过 ...
- 派生类的构造【C++继承】
构造规则 语法格式 构造顺序 图示 说明 构造顺序 子类构造器实战 层次设计感悟 构造规则 派生类中,由基类继承而来的成员的初始化工作,由基类的构造函数完成. 派生类中新增的成员在派生类的构造函数中初 ...
- C++ - 派生类(derived class) 的 构造(construct) 和 析构(destruct)顺序 详解
派生类(derived class) 的 构造(construct) 和 析构(destruct)顺序 详解 本文地址: http://blog.csdn.net/caroline_wendy/art ...
- 6.12C++:继承基类的构造函数、单继承的构造函数、多继承的构造函数、派生类复制构造函数、派生类的析构函数
1 继承基类的构造函数 class A{public:A(){}; // A的构造函数 }; class B : public A{public:using A:A: } 2 单继承的构造函数 cla ...
- 5、继承与派生4-派生类的构造和析构函数
派生类的构造函数只负责对派生类新增的成员进行初始化,对所有从基类继承下来成员,其初始化工作还是由基类的构造函数完成.同样,对派生类对象的扫尾.清理工作也需要加入新的析构函数. 1.构造函数 构造派生类 ...
- 继承规则及派生类的成员函数
继承是面向对象复用的重要手段.通过继承定义一个类,继承是类型之间的关系建模,共享共有的东西,实现各自本质不同的东西. 成员访问限定符&继承关系: 这是一个简单的继承关系: #include&l ...
- 基类成员的public访问权限在派生类中变为_C++ 派生类的构造函数(学习笔记:第7章 06)...
派生类的构造函数[1] 默认情况 基类的构造函数不被继承; 派生类需要定义自己的构造函数. C++11规定 可用using语句继承基类构造函数. 但是只能初始化从基类继承的成员. 派生类新增成员可以通 ...
- 基类成员的public访问权限在派生类中变为_C++ 派生类的构造函数举例:继承+组合(学习笔记:第7章 07)...
派生类构造函数举例[1] 例7-4 派生类构造函数举例 #include 对程序的说明:构造函数的执行顺序 1.调用基类构造函数. 顺序按照它们被继承时声明的顺序(从左向右):Base2, Base1 ...
- 构造函数怎么在主函数调用_C++ 虚基类及其派生类构造函数(学习笔记:第7章 12)...
虚基类及其派生类构造函数[1] 建立对象时所指定的类称为最远派生类. 虚基类的成员是由最远派生类的构造函数通过调用虚基类的构造函数进行初始化的. 在整个继承结构中,直接或间接继承虚基类的所有派生类,都 ...
最新文章
- SQLite中特殊的INSERT语句
- jQuery学习之jQuery Ajax用法详解
- python进阶项目设计_推荐系统进阶:设计和构建推荐系统流程综述(1)
- Python爬百度图片并下载到本地实战
- python test suit_python unittest学习3---添加测试套件,testsuit
- 【机器学习基础】一文归纳AI调参炼丹之法
- spring控制事务:声明式事务(注解)
- 我常用的python函数(part2)--executemany方法
- 史上最丧心病狂的商品定价套路:如何从数学角度,榨干你身上的每一分钱
- Object之MemberwiseClone方法
- AjaxControlToolkit工具控件之Accordion错误解决方法
- VB.NET工作笔记006---用visual studio2017 编写RESTFUL API
- 今天生意为什么越来越难做,到底真相是什么?
- excel几个数相加等于某个数_Excel如何在一列数字中找出几个之和等于某个特定值...
- return的用法 java_Java中return用法.
- Electron代码内部签名流程
- python基础学习_02数据类型+占位符+运算符+IF分支基础
- 《Python全栈系列教程》目录
- Python中使用print,每次输出数据到文件时,记录当前输出时间,数据序号加一
- POI报错_org.apache.xmlbeans.impl.values.XmlValueDisconnectedException
热门文章
- python适合自学编程吗-对没有编程基础的人来说,直接学Python入门IT合适吗?
- python创建txt文件并写入-python创建txt文件
- linux下docker部署redis
- java计算器用什么布局_求JAVA语言写的计算器的代码。用GridLayout布局。
- 均值文件转matlab,LMD局域均值分解的matlab程序及示例代码
- mysql编译安装vs20156_Linux上安装JDK1.8,tomcat9,以及mysql8的步骤
- WebRTC-集成qsv硬解码实现
- 常用编码软件简单使用记录 2 : 非自主编码器
- html如何隐藏二进制字符串,如何用二进制代码隐藏字符串?
- python加载csv文件去重_用python读写和处理csv文件