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

 

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

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM