在下面的代码中,我试图创建一个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)