#include<iostream.h>
class A{
public:
int i;
A(int j=3):i(j){}
};
class B:virtual public A{
public:
B(int j=2):A(j){}
};
class C:virtual public A{
public:
C(int j=1):A(j){}
};
class D:public B, public C {
public:
D(int j=0):A(j), B(j+1), C(j+2){}
};
int main()
{
D d;
cout<<d.i;
return 0;
}
最終的な出力がどのようにゼロであるかを理解できません。jがデフォルトの方法で固定値に初期化されるたびに、クラスDのコンストラクターで初期化された値はどのようにクラスAに渡されますか?