次のコードでは、C クラスの構築は、A、B1、B2、最後に C クラスの初期化から始まります。ただし、B1 と B2 を初期化するとき、デバッガーは A(1) と A(2) の初期化 (B1 と B2 の初期化リストにこの順序で表示される) を無視しましたが、B2(3) の初期化は無視しませんでした。 C初期化リストで。
Why is that?
Thanks in advance.
Here is the code:
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) {}
};
int _tmain(int argc, _TCHAR* argv[])
{
C* c = new C();
return 0;
}