| 类的构造函数调用顺序是什么? 如果一个类有多个基类,基类的构造函数在继承类的构造函数之前被调用。基类的构造函数以被声明的顺序被调用。下面是一个例子: class Y {...} Y(); // 基类的构造函数 对于多基类的情况,下面是一个例子: class X : public Y, public Z 构造函数以声明的次序调用。 Y(); // 基类构造函数首先被调用 虚基类的构造函数在任何非虚基类构造函数前调用。如果构造中包括多个虚基类,它们的调用顺序以声明顺序为准。如果虚类是由非虚类派生而来,那非虚类的构造函数要先被调用。下面是一个例子: class X : public Y, virtual public Z 调用顺序如下: Z(); // 虚基类初始化 下面是一个复杂的例子: class base; 构造函数调用顺序如下: base(); // 虚基类仅被构造一次 如果类继承中包括多个虚基类的实例,基类只被初始化一次。 |