基本功能的钻石继承力

时间:2019-05-15 22:05:19

标签: c++

我有一个基类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();

0 个答案:

没有答案