//若不是虚基类,则每次都会调用Basic()#include <iostream>
using namespace std;
class Basic{
public:
Basic(){
cout<<"Basic"<<endl;
}
};
class child1:virtual public Basic{
public:
child1(){
cout<<"child1"<<endl;
}
};
class child2:virtual public Basic{
public:
child2(){
cout<<"child2"<<endl;
}
};
class child3:public Basic{
public:
child3(){
cout<<"child3"<<endl;
}
};
class grachild:public child1,public child2,public child3{
public:
grachild(){
cout<<"grachild"<<endl;
}
};
int main()
{
grachild test;
return 0;
}


本文通过一个C++程序示例展示了虚基类在多重继承中的作用。当不使用虚基类时,从多个路径继承相同的基类会导致基类构造函数被多次调用。通过使用虚继承可以避免重复调用基类构造函数,确保即使在复杂的继承结构中基类也只初始化一次。
2430

被折叠的 条评论
为什么被折叠?



