构造函数调用顺序

构造函数调用顺序总结:

1. 按虚继承顺序

2. 按非虚继承顺序

3. 按成员变量声明顺序

#include <iostream>
using namespace std;

class A
{
public:
A(){cout<<"A"<<endl;}
};

class B
{
public:
B(){cout<<"B"<<endl;}
};

class C
{
public:
C(){cout<<"C"<<endl;}
};

class D
{
public:
D(){cout<<"D"<<endl;}
};

class E
{
public:
E(){cout<<"E"<<endl;}
};

class X: public A, virtual public B, public C, virtual public D
{
public:
X(){cout<<"X"<<endl;}

A a;
E e;
};

int main()
{

X x;

return 0;
}

运行结果:

B

D

A

C

A

E

X

原文地址:https://www.cnblogs.com/wangxiaokun/p/7089178.html