基类和派生类析构函数调用顺序的输出例子
来源:互联网 发布:js是什么文件 编辑:程序博客网 时间:2024/06/11 15:38
class A { public: A() { } ~A() { cout<<"~A"<<endl; } }; class B:public A { public: B(A &a):_a(a) { } ~B() { cout<<"~B"<<endl; } private: A _a; }; int main(void) { A a; //很简单,定义a的时候调用了一次构造函数 B b(a); }
输出为:
~B
~A
~A
~A
想知道其调用顺序是怎样的,可以类中添加成员变量name,在析构函数中打印出来,将代码改为下面的:
#include <iostream>#include <string>using namespace std;class A{public:A(string n = "default"):name(n) { }~A() { cout << "~A:" << name << endl; }private:string name;};class B :public A{public:B(A &a) :_a(a){}~B(){cout << "~B" << endl;}private:A _a;};int main(void){A a("a"); //很简单,定义a的时候调用了一次构造函数 B b(a);}
输出为:
第一行是调用B的析构函数
第二行是因为派生类中包含类A,要把a释放,调用a的析构函数
第三行是调用基类的析构函数
第四行是因为A a调用析构函数
可以看到,函数中析构函数的调用与类的声明顺序相反的
0 0
- 基类和派生类析构函数调用顺序的输出例子
- 构造函数访问权限和基类构造函数,派生类的构造函数调用顺序
- 构造函数和析构函数在基类和派生类之间的调用顺序
- 派生类构造函数的调用顺序
- 派生类构造函数的调用顺序
- 【C++】基类和派生类构造函数的调用顺序
- c++基类和派生类的构造析构函数调用顺序
- 基类派生类构造析构函数调用顺序、成员初始化和销毁顺序
- C++派生类构造函数和析构函数的调用顺序
- 派生类构造函数和析构函数的调用顺序(C++)
- C++之派生类的构造函数和析构函数调用顺序
- 抽象类 纯虚函数 虚函数 派生类 派生类对象 基类对象 ——调用顺序,用基类调用派生类的方法
- 虚基类和派生类的函数调用
- 关于派生类构造函数与基类构造函数的调用顺序问题
- 关于派生类构造函数与基类构造函数的调用顺序问题
- 关于派生类构造函数与基类构造函数的调用顺序问题
- 关于派生类构造函数与基类构造函数的调用顺序问题
- C++派生类构造函数调用顺序
- ios 开发中继承
- 实际用户ID,有效用户ID和设置用户ID
- 【Code Forces】221D - Little Elephant and Array(线段树,思维做法)
- .net 导出excel 数字文本
- 桶排序
- 基类和派生类析构函数调用顺序的输出例子
- 记录的地平线第二季ED – Wonderful Wonder World*/Yun*chi 320k
- 高德和百度之间的经纬度转换
- cocos2d-x 3.2 移动游戏背景和精灵
- Android WebView常见问题解决方案汇总
- Linux内核Makefile笔记
- cocos2d-x创建和转换场景
- 写入证书到USBKEY
- 读后感1《微信视频和文章》