#include <iostream>using namespace std;// 多继承产生的问题:如果一个继承的多继承有同一个父类,// 则父类的构造函数会被调用两次//////////////////////////////////////////////////////////////////////////// 多继承,多基类混乱的问题// 以下代码的结果/*总类 A 构造函数被调用。。。类 A1 构造函数被调用。。。总类 A 构造函数被调用。。。类 A1 构造函数被调用。。。类 F 构造函数被调用。。。*/class A{public:A(){cout << "总类 A 构造函数被调用。。。" << endl;}};class A1 :public A{public:A1(){cout << "类 A1 构造函数被调用。。。" << endl;}};class A2 :public A{public:A2(){cout << "类 A1 构造函数被调用。。。" << endl;}};class F :public A1, public A2{public:F(){cout << "类 F 构造函数被调用。。。" << endl;}};int main1(){F f;return 0;}
#虚继承解决多继承产生的问题
#include <iostream>using namespace std;//////////////////////////////////////////////////////////////////////////// 使总基类虚继承,可避免因为多继承,多基类混乱的问题// 以下代码的结果/*总类 A 构造函数被调用。。。类 A1 构造函数被调用。。。类 A1 构造函数被调用。。。类 F 构造函数被调用。。。请按任意键继续. . .*/class AA{public:AA(){cout << "总类 A 构造函数被调用。。。" << endl;}};class AA1 : virtual public AA{public:AA1(){cout << "类 A1 构造函数被调用。。。" << endl;}};class AA2 :virtual public AA{public:AA2(){cout << "类 A1 构造函数被调用。。。" << endl;}};class FF :public AA1, public AA2{public:FF(){cout << "类 F 构造函数被调用。。。" << endl;}};int main(){FF f;return 0;}
原文:http://www.cnblogs.com/nfking/p/5582664.html