私は次の構造体を持っています
struct A
{
int i;
A() { i = 0; }
A(int _i) : i(_i) {}
virtual void f() { cout << i; }
};
struct B1 : virtual A {
B1() : A(1) { f(); }
void f() { cout << i+10; }
};
struct B2 : virtual A {
B2(int i) : A(2) { f(); }
};
struct C : B1, B2 {
C() : B2(3) {}
};
次のコードが100を出力する理由を説明してください:(10 + 0)
C* c = new C();
1111を出力する必要があると思います。最初にA():i = 0、次にB1():i = 1で、B1::f()
-11を出力し、次にB2():B1::f()
11を出力します。
どこが悪いの?
ありがとう