У меня есть следующие структуры
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
Где я ошибаюсь?
Спасибо