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.代碼示例
執行輸出:
