代码如下:
#include <iostream>
using namespace std;
class base1{
public:
base1() {
cout<<"class base1"<<endl;
}
};
class base2{
public:
base2() {
cout<<"class base2"<<endl;
}
};
class level1:public base2,virtual public base1{
public:
level1() {
cout<<"class level1"<<endl;
}
};
class level2:public base2,virtual public base1{
public:
level2() {
cout<<"class level2"<<endl;
}
};
class toplevel:public level1,virtual public level2{
public:
toplevel() {
cout<<"class toplevel"<<endl;
}
};
int main () {
toplevel obj;
return 0;
}
请各位大佬帮我分析下这个结果
实在有点让我难以理解
构造都是先构造基类,再构造子类,所以可以反过来看顺序更好理解
另外,由于涉及多重继承,使用了virtual继承,所以被重复继承的base1基类,只会进行一次构造