继承构造函数初始化顺序 多重继承构造函数的调用顺序

在任何非虚拟基类构造函数之前调用虚拟基类的构造函数。如果构造中包含多个虚拟基类,则它们的调用顺序为声明顺序。如果虚拟类是从非虚拟类派生的,则首先调用非虚拟类的构造函数。下面是一个示例:class X:

在任何非虚拟基类构造函数之前调用虚拟基类的构造函数。如果构造中包含多个虚拟基类,则它们的调用顺序为声明顺序。如果虚拟类是从非虚拟类派生的,则首先调用非虚拟类的构造函数。

下面是一个示例:

class X:public y,virtual public Z

X one

调用顺序如下:

Z()//虚拟基类初始化

y()//非虚拟基类

X()//继承类