博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【C++】继承时构造函数和析构函数
阅读量:6265 次
发布时间:2019-06-22

本文共 1367 字,大约阅读时间需要 4 分钟。

1. 顺序

  先调用基类的构造函数,再调用派生类构造函数。析构顺序相反。

2. 构造函数

  派生类 不用初始化列表调用基类构造函数->调用基类的默认构造函数

  派生类 使用初始化列表调用基类带参构造函数->调用基类相关的带参构造函数

  若派生类有多个构造函数版本,其中任意一个基类的构造函数不匹配,都会出错。

3. 复制构造函数

  派生类 未定义复制构造函数 ->调用基类的复制构造函数(如果有)或默认复制构造函数,和派生类的默认复制构造函数

  派生类 定义了复制构造函数  未使用初始化列表调用基类复制构造函数 -> 调用基类默认构造函数

      派生类 定义了复制构造函数  使用初始化列表调用基类复制构造函数 -> 调用基类复制构造函数(如果有)或默认复制构造函数

 

例子:

#include
using namespace std;class A{public: A() { cout << "A 默认构造函数" << endl; } A(int i) { cout << "A A(int i)构造函数" << endl; } ~A() { cout << "A 析构函数" << endl; } A(const A & obj) { cout << "A 复制构造函数" << endl; }};class B : public A{public: B() { cout << "B 默认构造函数" << endl; } B(int j):A(j) { cout << "B B(int j):A(j)" << endl; } ~B() { cout << "B 析构函数" << endl; } B(const B & obj) //调用A的默认构造函数 { cout << "B 复制构造函数" << endl; } //B(const B & obj):A() //调用A的默认构造函数 //{ // cout << "B 复制构造函数" << endl; //} //B(const B & obj):A(obj) //调用A的复制构造函数 //{ // cout << "B 复制构造函数" << endl; //}};int main(){ { cout << "----------------------" << endl; B b; cout << "----------------------" << endl; B b1(3); cout << "----------------------" << endl; B b2(b); cout << "----------------------" << endl; } return 0;}

转载地址:http://xkdpa.baihongyu.com/

你可能感兴趣的文章
实战BULK COLLECT(成批聚合类型)和数组集合type类型is table of 表%rowtype index by binary_integer ....
查看>>
Linux编程基础——线程概述
查看>>
Hive内部表外部表转化分析
查看>>
【转】使用Xcode和Instruments调试解决iOS内存泄露
查看>>
CDE: Automatically create portable Linux applications
查看>>
微信公众平台开发(4)天气预报
查看>>
WPF: RenderTransform特效
查看>>
基础才是重中之重~你是否真正了解TransactionScope?
查看>>
svn
查看>>
何时会发生db file sequential read等待事件?
查看>>
了解你所不知道的SMON功能(十二):Shrink UNDO(rollback) SEGMENT
查看>>
GCC编译器中的扩展
查看>>
[置顶] 礼物:《红孩儿引擎内功心法修练与Cocos2d-x》之结点系统(场景,层,精灵)...
查看>>
使用快捷键,快到极致
查看>>
[原]【实例化需求】1.FitNesse工具应用简介
查看>>
java中的import和package机制
查看>>
统计、案例-深入理解Oracle索引(10):索引列字符类型统计信息的32位限制-by小雨...
查看>>
ubuntu常用命令精选
查看>>
UML类图
查看>>
企业上市上市央企大面积亏损折射出啥弊端?
查看>>