#include <iostream>
using namespace std;
class A {
public:
A(int a = 0):a(a) {}
int a;
};
class B :virtual public A {
};
class C :virtual public A {
};
class D :public B, public C{
public:
D(int d):A(d) {}
};
int main() {
D d(5);
d.B::A::a = 10;
d.C::A::a = 20;
cout << d.a << endl;
return 0;
}
B和C类对A类进行了虚继承,所以A类中的数据成员在D类中只有一份
d对象的a值被修改为20后,B类中的a值也变为20
Easy