我的代码:
class Parent
{
public: Parent() { cout << "Default Parent" << endl; }
Parent(int x) { cout << "Parameterized Parent" << endl; }
};
class Child1: virtual public Parent
{
public: Child1() :Parent(10) { cout << "Default Child1" << endl; }
};
class Child2: virtual public Parent
{
public: Child2() :Parent(10) { cout << "Default Child1" << endl; }
};
class GrandChild: public Child1, public Child2
{
public:
GrandChild() { cout << "Default GrandChild" << endl; }
};
int main()
{
GrandChild G;
return 0;
}
输出:
default Parent
default Child1
default Child2
default GrandChild
我知道除非另有说明,否则这里派生的类最多会调用Parent类的默认构造函数。
但为什么ChildX类的参数化Parent构造函数调用永远不会被执行?没有ChildX类,GrandChild类不能存在(?)。如果没有参数化调用,则不会创建ChildX类(?)。