my blogs

multiple inheritance

对二义性的检查是在访问控制检查之前进行的。

#include<iostream.h>
class Base_1{
   public:
   Base_1(int x){cout<<x<<"->Base_1 构造函数.\n";}
   ~Base_1(){cout<<"Base_1 析构函数.\n";}  
};
class Base_2{
   public:
   Base_2(int y){cout<<y<<"->Base_2 构造函数.\n";}
   ~Base_2(){cout<<"Base_2 析构函数.\n";}
  
};
class Derived_1:public Base_1,public Base_2{
   public:
   Derived_1(int x,int y):Base_1(x),Base_2(y){ cout<<"子类1的构造函数.\n";}
   ~Derived_1(){cout<<"子类1的析构函数.\n";}
};
class Derived_2:public Base_2,public Base_1{
   public:
   Derived_2(int x,int y):Base_1(x),Base_2(y){cout<<"子类2的构造函数.\n";}
   ~Derived_2(){cout<<"子类2的析构函数.\n";}
};
int main()
{
   Derived_1 obj_1(20,30);
   Derived_2 obj_2(40,50);
   return 0;
}

运行结果:

20->Base_1 构造函数.
30->Base_2 构造函数.
子类1的构造函数.
50->Base_2 构造函数.
40->Base_1 构造函数.
子类2的构造函数.
子类2的析构函数.       //首先调用子类2的析构函数,与构造函数调用顺序相反
Base_1 析构函数.     
Base_2 析构函数.
子类1的析构函数.
Base_2 析构函数.
Base_1 析构函数.
请按任意键继续. . .

posted @ 2013-10-13 20:50  Tim Haver  阅读(129)  评论(0编辑  收藏  举报