请问这个运行结果为什么是20呢


#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