#include <iostream>
using namespace std;
class A
{
public:
A() {cout << "now initialize A.\n";}
};
class B
{
public:
B(A _a = A()) : a(_a) { cout << "now initialize B." << endl;}
private:
A a;
};
class C
{
public:
C(){ cout << "now initialize C." << endl;}
private:
A a;
};
class D:public A
{
public:
D(){cout << "now initalize D" << endl;}
private:
C c;
};
/**
*构造顺序:基类 组合 本身
*析构顺序:和构造顺序相反
*result:
now initialize A.
now initialize B.
--------------
now initialize A.
now initialize C.
--------------
now initialize A.
now initialize A.
now initialize C.
now initalize D
--------------
*/
int main()
{
B b;
cout << "--------------" << endl;
C c;
cout << "--------------" << endl;
D d;
cout << "--------------" << endl;
return 0;
}
c++ 构造函数执行顺序
最新推荐文章于 2024-02-03 09:11:59 发布