我有这段代码:
struct V {
V(int a=0) { std::cout <<"V" << a;}
};
struct A: virtual V {
A(int a);
};
struct B : virtual V {
B(int a =8);
};
struct C: A,B {
C(int a);
};
struct D: C, B{
D(int);
};
A::A(int i) : V(i) { std::cout << "A"<<i;}
B::B(int i) { std::cout <<"B"<<i;}
C::C(int i): A(i),B(i),V(i) { std::cout <<"C"<<i;}
D::D(int i): C(i) { std::cout <<"D" << i;}
int main()
{
D d(5); std::cout << std::endl;
return 0;
}
输出:
V0 A5的 B5 C5B8D5
我认为 B5 是struct C
的初始化列表的结果,在此列表中也有V(i)
,但是V打印0,没有5。
问题: 为什么结果是V0不是V5?