天天看點

C++構造函數、析構函數、虛析構函數

1.構造函數

  C++中的構造函數是用于初始化類的各種變量以及配置設定資源等。主要的注意事項是:

  (1)在繼承關系中先初始化父類對象後初始化子類對象。

  (2)在一個類中按照變量的聲明順序,對類中的變量進行初始化。

  (3)初始化過程中,可以使用已經被初始化的對象去初始化其他的對象。

2.析構函數

  析構函數與構造函數作用相反,當對象脫離其作用域時(例如對象所在的函數已調用完畢),系統自動執行析構函數。

  析構函數往往用來做“清理善後” 的工作(例如在建立對象時用new開辟了一片記憶體空間,應在退出前在析構函數中用delete釋放)。

  調用順序與構造函數正好相反,先析構子類(釋放子類資源),在析構父類(釋放父類資源)。

3.虛析構函數

  虛析構函數可以認為是特殊的析構函數,主要作用在繼承關系中。

  若B是A的子類:  A *a=new B;

          delete a;

  如果A的析構函數是non-vartual,則隻會調用A的析構函數,這樣B的資源沒有釋放,就會有記憶體洩露;

  如果A的析構函數是vartual,則隻會先調用A的析構函數,再調用B的析構函數。

4.代碼示例

 執行輸出:

 

C++構造函數、析構函數、虛析構函數

繼續閱讀