C++的构造和析构顺序
2018-01-30 10:07
190 查看
子类的构造和析构过程, 上代码:
输出:
Hello, World!
CA()
CB()
~CB()
~CA()
总结:
子类构造顺序:父类构造->子类有构造
子类析构顺序:子类析构->父类析构
孙子类的构造和析构过程, 上代码:
输出:
Hello, World!
CA()
CB()
CC()
~CC()
~CB()
~CA()
总结:
孙子类的构造过程: 爷类构造->父类构造-孙子类构造
孙子类的析构过程: 孙子类析构->父类析构->爷类析构
#include <iostream> using namespace std; class CA { public: CA() { cout << "CA()" << endl; } ~CA() { cout << "~CA()" << endl; } }; class CB : public CA { public: CB() { cout << "CB()" << endl; } ~CB() { cout << "~CB()" << endl; } }; int main() { cout << "Hello, World!" << endl; CB b; return 0; }
输出:
Hello, World!
CA()
CB()
~CB()
~CA()
总结:
子类构造顺序:父类构造->子类有构造
子类析构顺序:子类析构->父类析构
孙子类的构造和析构过程, 上代码:
#include <iostream> using namespace std; class CA { public: CA() { cout << "CA()" << endl; } ~CA() { cout << "~CA()" << endl; } }; class CB : public CA { public: CB() { cout << "CB()" << endl; } ~CB() { cout << "~CB()" << endl; } }; class CC : public CB { public: CC() { cout << "CC()" << endl; } ~CC() { cout << "~CC()" << endl; } }; int main() { cout << "Hello, World!" << endl; //CB b; CC c; return 0; }
输出:
Hello, World!
CA()
CB()
CC()
~CC()
~CB()
~CA()
总结:
孙子类的构造过程: 爷类构造->父类构造-孙子类构造
孙子类的析构过程: 孙子类析构->父类析构->爷类析构
相关文章推荐
- C++ 构造与析构的执行顺序
- C++ - 派生类(derived class) 的 构造(construct) 和 析构(destruct)顺序 详解
- C++ - 虚继承(virtual inheritance)的构造(construct)和析构(destruct)顺序
- C++构造和析构顺序
- C++ - 派生类(derived class) 的 构造(construct) 和 析构(destruct)顺序 详解
- C++ - 虚继承(virtual inheritance)的构造(construct)和析构(destruct)顺序
- 揭示C++中全局类变量的构造与析构顺序 推荐
- C++ 构造,析构顺序(静态对象)
- C++子类构造和析构被时,父类构造和析构的调用顺序
- C++ 构造、析构的顺序
- 关于C++继承体系中类的构造与析构的顺序【转贴】
- C++中派生类的构造、析构的调用顺序
- C++程序:C++ 构造、析构的顺序
- 揭示C++中全局类变量的构造与析构顺序
- [C++]搞清楚类中构造与析构的顺序
- c++子类对象构造与析构的顺序对多态性的影响
- 揭示C++中全局类变量的构造与析构顺序
- c++对象成员变量的构造和析构顺序
- [C++]多个对象构造、析构、构造和析构的顺序
- C++学习笔记:3.3.4 继承和组合混搭情况下,构造和析构调用顺序