多继承时的构造函数调用的顺序

调用顺序是:虚基类——直接基类——子对象——派生类

我们假设一个非常复杂的情况:

class A;

class B: virtual public A;

class C: virtual public A;

class E;

class D:public B, public C

其中E是D的子对象

首先说明,构造函数的调用顺序,跟D中的构造函数调用个类的成员函数的顺序无关

因为B和C都是虚继承自A,所以首先调用都在A的构造函数,然后根据类D继承B,C的顺序调用B,C的构造函数;

然后调用子对象构造函数,因为构造子对象E是构造D的任务的一部分

下面是完整代码:

#include
using namespace std;
class A
{
	public:
		A(char a1)
		{
			cout<<"constructor A called"<

输出结果:

多继承时的构造函数调用的顺序_第1张图片

转载于:https://www.cnblogs.com/zhezh/p/3773349.html

你可能感兴趣的:(多继承时的构造函数调用的顺序)