我有一个基类C,它的int属性称为“ y”,它是由A类和B类公开并实际上继承的。D类都继承了A,B。所有类都有一个整数构造函数。
class C {
public:
C();
virtual ~C();
C(int x)
{
y = x;
}
void print()
{
cout << y << endl;
}
private:
int y;
};
class B : public virtual C {
public:
B();
virtual ~B();
B(int x)
: C(x)
{
}
};
class A : public virtual C {
public:
A();
virtual ~A();
A(int y)
: C(y)
{
}
};
class D : public B, public A {
public:
D();
virtual ~D();
D(int x)
: B(x)
, A(x)
{
}
};
我不知道为什么下面的代码打印0而不是3,如何使其正确打印3?
C* a = new D(3);
a->print();