6

このコード例に出くわしました:

#include <iostream>
using namespace std;

class A {
    int x;
public:
        A() { x = 1; cout << "A"; }
};
class B : virtual public A {
        int y;
public:
        B() { y = 2; cout << "B"; }
};
class C : virtual public B, virtual public A {
        int z;
public:
        C() { z = 3; cout <<"C"; }
};
class D : public A, public B, public C {
        int t;
public:
        D() { t = 4; cout << "D"; }
};
int main()
{
        D d;
        return 0;
}

このコードは出力ABABCDされますが、その理由はわかりません。Afor D : public A、次にABfor D : public B、次にABCfor D : public C、そして と出力されると思っていましたが、 2 回しか出力されないDようです。Aこれはどのように作動しますか?

4

1 に答える 1