继承中的构造函数

时间:2017-03-19 18:27:42

标签: c++ constructor virtual-inheritance

我有这段代码:

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?

0 个答案:

没有答案