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++语言处理此类次序问题的一般规律。*/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了