2026/3/3 13:15:12
网站建设
项目流程
做企业宣传网站,百度电话号码查询,什么是域名,wordpress如何创建分类1. C 类成员与自身的构造和析构顺序
默认先构造类成员#xff08;类成员的构造顺序就是类成员在类中被书写的顺序#xff09;#xff0c;然后再构造类本身。参看 “测试代码 1”。默认先析构类本身#xff0c;然后再析构类成员#xff08;类成员的析构顺序就是类成员在类中…1. C 类成员与自身的构造和析构顺序默认先构造类成员类成员的构造顺序就是类成员在类中被书写的顺序然后再构造类本身。参看 “测试代码 1”。默认先析构类本身然后再析构类成员类成员的析构顺序就是类成员在类中被书写顺序的反顺序。参看 “测试代码 1”。如果类成员在类的构造函数中才被初始化那么就是先调用类自身的构造函数然后再按类成员在构造函数中的初始化顺序依次构造类成员。但是析构顺序总是先析构类本身然后再析构类成员类成员的析构顺序就是类成员在类中被书写顺序的反顺序。参看 “测试代码 2”。可以使用智能指针并在类的析构函数中调用智能指针的reset函数显式更改类成员之间的析构顺序以及类成员和类本身的析构顺序。参看 “测试代码 3”。1.1. 测试代码 1#includeiostreamusingnamespacestd;classA{public:A(){coutconstructor Aendl;}~A(){coutdestructor Aendl;}};classB{public:B(){coutconstructor Bendl;}~B(){coutdestructor Bendl;}};classC{public:C(){coutconstructor Cendl;}~C(){coutdestructor Cendl;}private:A a;B b;};intmain(){C c;return0;}输出constructor A constructor B constructor C destructor C destructor B destructor A1.2. 测试代码 2#includeiostream#includememory#includeutilityusingnamespacestd;classA{public:A(){coutconstructor Aendl;}~A(){coutdestructor Aendl;}};classB{public:B(){coutconstructor Bendl;}~B(){coutdestructor Bendl;}};classC{public:C(){coutconstructor Cendl;bstd::make_uniqueB();astd::make_uniqueA();}~C(){coutdestructor Cendl;}private:A a1;unique_ptrAa;unique_ptrBb;};intmain(){unique_ptrCcstd::make_uniqueC();return0;}输出constructor A constructor C constructor B constructor A destructor C destructor B destructor A destructor A1.3. 测试代码 3#includeiostream#includememory#includeutilityusingnamespacestd;classA{public:A(){coutconstructor Aendl;}~A(){coutdestructor Aendl;}};classB{public:B(){coutconstructor Bendl;}~B(){coutdestructor Bendl;}};classC{public:C(){coutconstructor Cendl;astd::make_uniqueA();bstd::make_uniqueB();}~C(){coutdestructor Cendl;a.reset();b.reset();}private:unique_ptrAa;unique_ptrBb;};intmain(){unique_ptrCcstd::make_uniqueC();return0;}输出constructor C constructor A constructor B destructor C destructor A destructor B2. C 父类和子类的构造和析构顺序对象在创建时构造函数的调用顺序调用父类的构造函数调用成员变量的构造函数调用类自身的构造函数。子类对象析构时的顺序析构函数的调用顺序与构造函数相反2. 执行自身的析构函数3. 执行成员变量的析构函数4. 执行父类的析构函数。