C++ 继承共享内存

C++ 继承共享内存,c++,C++,我有一个问题,我不能合乎逻辑地回答。为什么在我运行以下代码之后会出现这种情况: class foo1 { private: int age; public: foo1(int _age) :age(_age) {} void print() { std::cout << age << std::endl; } }; class foo2 :virtual public foo1 { int grade; public: foo2(

我有一个问题,我不能合乎逻辑地回答。为什么在我运行以下代码之后会出现这种情况:

class foo1
{
private:
    int age;
public:
    foo1(int _age) :age(_age) {}
    void print() { std::cout << age << std::endl; }
};

class foo2 :virtual public foo1
{
    int grade;
public:
    foo2(int _age, int _grade) :foo1(_age), grade(_grade) {}
};


class foo3 :virtual public foo2
{
private:
    int score;
public:
    foo3(int _age, int _grade, int _score) : 
          foo1(_age), foo2(5000, _grade), score(_score) {}
};

int main()
{
    foo3 k(77,2,3);
    k.print();
}
1类
{
私人:
智力年龄;
公众:
foo1(国际年龄):年龄({}

void print(){std::cout一个虚拟继承类的构造函数总是由最派生的类调用。在你的例子中,是foo3调用的。foo2中foo1的构造函数调用被跳过。

共享内存在哪里?这是一个有趣的问题,但我希望你永远不要在实际应用程序中使用此代码。