C++類的繼承中構造函數和析構函數調用順序例子

/*當建立一個對象時,首先調用基類的構造函數,然後調用下一個派生類的
構造函數,依次類推,直至到達派生類次數最多的派生次數最多的類的構造函數爲止。
簡而言之,對象是由“底層向上”開始構造的。因爲,構造函數一開始構造時,總是
要調用它的基類的構造函數,然後纔開始執行其構造函數體,調用直接基類構造函數時,
如果無專門說明,就調用直接基類的默認構造函數。在對象析構時,其順序正好相反。
下面的這個程序說明這個問題*/

 

複製代碼
 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 class A
 6 {
 7 public:
 8     int i;
 9     A() {cout<<"AAa"<<endl;}
10     ~A() {cout<<"qqqq"<<endl;}
11 protected:
12 private:
13 };
14 
15 class B:public A
16 {
17 public:
18     B(int a) {cout<<"BBB"<<endl;}
19     ~B() {cout<<"wwwww"<<endl;}
20 };
21 
22 
23 int main() 
24 {
25     B b(3);27 
28     return 0;
29     system("PAUSE");
30 }
複製代碼

 

打印出結果:

AAa

BBB

wwwww

qqqq

 

證明構造是由基類向下,析構是由子類向上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章