2

I have this code:

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;
}

Output:

V0A5B5C5B8D5

I suppose that B5 is a result of initialization list of struct C, in this list there is V(i) too, but V prints 0, no 5.

Question: Why result is V0 not V5 ?

melpomene
  • 84,125
  • 8
  • 85
  • 148
Thomas Banderas
  • 1,681
  • 1
  • 21
  • 43

0 Answers0