1. 程式人生 > >c++中解構函式呼叫時機的研究

c++中解構函式呼叫時機的研究

    眾所周知,c++中的每個類都會有一個解構函式,當這個類的物件被銷燬的時候,物件會自動呼叫解構函式。那麼什麼情況下物件的解構函式會被自動呼叫呢?其實這個問題也可以換種方式問,什麼情況下物件會被自動銷燬。     我們跟據物件的宣告方式分兩種情況來講:     1、動態宣告的物件     這種宣告方式下系統會自動銷燬不再使用的物件,對應的物件的解構函式也會被呼叫。例如classname object;這樣宣告的物件,當程式執行到了物件作用域之外或者程式退出,物件都會被銷燬,當然解構函式也會被呼叫。     2、靜態宣告的物件(new等)     這種宣告方式下系統不會主動幫你銷燬物件,對應的解構函式也不會被主動呼叫,除非你的程式顯式地呼叫delete等函式。這種情況下只要你不去delete,物件的解構函式永遠不會呼叫,即便這個物件的記憶體空間已經洩露或者程式退出。