C++封闭类的结构函数和析构函数的调用顺序

//program 12.6.2.cpp 封闭类的结构函数和析构函数的调用顺序.
#include <iostream>
using namespace std;
class CTyre {
public:
CTyre() { cout << "CTyre constructor" << endl; }
~CTyre() { cout << "CTyre destructor" << endl; }
};
class CEngine {
public:
CEngine() { cout << "CEngine constructor" << endl; }/*constructor n. 构造函数;构造器;建造者*/
~CEngine() { cout << "CEngine destructor" << endl; }/*destructor 美: [dɪ'strʌktə] 析构函数;解构式;析构器;破坏器;爆破装置*/
};
/*封闭类*/
class CCar {
private:
/*根据成员变量的定义顺序来决定那个类的构造函数写执行*/
CEngine engine;
CTyre tyre;
public:
/*封闭类的无参默认析构函数CCar(),任然还是要调用成员对象的构造函数,然后才能够进入CCar()的函数体(这里是打印CCar constructor*/
CCar( ) { cout << "CCar constructor" << endl; }
~CCar() { cout << "CCar destructor" << endl; }
};
int main(){
CCar car;
return 0;
}
/*封闭类对象生成时,先执行所有成员对象的构造函数,然后才执行封闭类自己的构造函数。
成员对象构造函数的执行次序和成员对象在类
的定义中的次序一致,与它们在构造函数初始化列表中出现的次序无关。
当封闭类对象消亡时,先执行封闭类的析构函数,然后再执行成员对象的析构函数;
析构函数的执行次序和构造函数的执行次序相反,即先 构造 后 析构,
这是C++语言处理此类次序问题的一般规律。*/
posted @   xuchaoxin1375  阅读(10)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示