小编Ton*_* Wu的帖子

如何在虚拟继承中构造直接基础?

在下面的代码中,我试图创建一个Leaf对象obj来查看多层继承中的构造函数顺序,但我发现obj在这种情况下构造函数调用的结构有点奇怪.

#include<iostream>
using namespace std;
class Base1 { 
public:
    Base1(void) { 
        cout << "class Base1" << endl; 
    } 
}; 
class Base2 {
public: 
    Base2(void) { 
        cout << "class Base2" << endl; }
};
class Level1 : public Base2, virtual public Base1
{
public:
    Level1(void)
    {
        cout << "class Level1" << endl;
    }
};

class Level2 : public Base2, virtual public Base1
{
public:
    Level2(void)
    {
        cout << "class Level2" << endl;
    }
};

class …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance multiple-inheritance virtual-inheritance

5
推荐指数
1
解决办法
117
查看次数