面试题答案
一键面试- 虚基类构造函数的调用时机:
- 在C++中,当一个派生类继承自虚基类时,虚基类的构造函数由最终派生类负责调用。也就是说,无论虚基类在继承体系中被间接继承了多少层,虚基类构造函数都只会在创建最终派生类对象时被调用一次。
- 多层继承结构下虚基类构造函数调用顺序特点:
- 对于多层继承结构(如A虚继承于B,C继承于A,D继承于C),虚基类B的构造函数在最终派生类D的构造函数执行时被调用,而且是在所有非虚基类构造函数之前调用。具体顺序为:先调用虚基类B的构造函数,然后按照继承顺序依次调用非虚基类(如A和C)的构造函数,最后调用最终派生类D自己的构造函数体。
例如:
class B {};
class A : virtual public B {};
class C : public A {};
class D : public C {};
int main() {
D d;
return 0;
}
在上述代码中,创建D
对象时,先调用B
的构造函数,接着调用A
的构造函数,再调用C
的构造函数,最后执行D
的构造函数体。