在以下代码中:
class A
{
public:
int x;
A(int x):x(x){}
};
class B: public virtual A
{
public:
B(int x):A(x){}
};
class C: public virtual A
{
public:
C(int x):A(x){}
};
class D: public B, public C
{
public:
D(int x):B(x++), C(x++), A(x++){}
};
两个问题:
- 为什么我需要
A(...)
在 D 的初始化列表中添加? D(int x):B(x++), C(x++), A(x++){}
并且D(int x):A(x++), B(x++), C(x++){}
两者都给出相同的结果cout<<D(10).x
,为什么?