编译器如何实现虚拟继承?
在以下代码中:
class A {
public:
A(int) {}
};
class B : public virtual A {
public:
B() : A(1) {}
};
class C : public B {
public:
C() : A(3), B() {}
};
编译器是否生成两个B::ctor
函数实例,一个没有A(1)
调用,一个有调用?因此,当B::constructor
从派生类的构造函数调用时,使用第一个实例,否则使用第二个。