多重继承的构造函数和析构函数的执行顺序:

 
  
  1. //此处不做注释和说明了,看程序能读懂的  
  2. #include <iostream>  
  3. using namespace std;  
  4. class base1  
  5. {  
  6. private:  
  7.     int x1;  
  8. public:  
  9.     base1(int y1)  
  10.     {  
  11.         x1 = y1;  
  12.         cout<<"基类1构造函数执行..."<<"x1= "<<x1<<endl;  
  13.     }  
  14.     ~base1(){cout<<"base1 析构了...\n";}  
  15. };  
  16. class    base2  
  17. {  
  18. private:  
  19.     int x2;  
  20. public:  
  21.     base2(int y2)  
  22.     {  
  23.         x2 = y2;  
  24.         cout<<"基类2构造函数执行..."<<"x2= "<<y2<<endl;  
  25.     }  
  26.     ~base2(){cout<<"base2 析构了...\n";}  
  27. };  
  28. class base3  
  29. {  
  30. private:  
  31.     int x3;  
  32. public:  
  33.     base3(){cout<<"构造基类3...\n";}  
  34.     ~base3()  
  35.     {  
  36.         cout<<"基类3析构了...\n";  
  37.     }  
  38. };  
  39. //多重继承派生类的构造函数是按照声明的顺序执行的...  
  40. class derived:public base2,public base1,public base3  
  41. {  
  42. private:  
  43.     base1 obj1;  
  44.     base2 obj2;  
  45.     base3 obj3;  
  46. public:  
  47.     derived(int x,int y,int z,int v):base1(x),base2(y),obj1(z),obj2(v)  
  48.     {  
  49.         cout<<"派生类构造函数执行...\n";  
  50.     }  
  51.     ~derived(){cout<<"派生类析构函数执行...\n";}  
  52. };  
  53. int main()  
  54. {  
  55.     derived ob(1,2,3,4);  
  56.     return 0;  
  57. }  

多重继承