在接下来的代码中,构建一个 C 类首先初始化 A,然后是 B1,然后是 B2,最后是 C 类。但是,在初始化 B1 和 B2 时,调试器忽略了 A(1) 和 A(2) 的初始化(按此顺序出现在 B1 和 B2 的初始化列表中),但没有忽略 B2(3) 的初始化在 C 初始化列表中。
这是为什么?
提前致谢。
这是代码:
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;
}