眾所周知,c++中的每個類都會有乙個析構函式,當這個類的物件被銷毀的時候,物件會自動呼叫析構函式。那麼什麼情況下物件的析構函式會被自動呼叫呢?其實這個問題也可以換種方式問,什麼情況下物件會被自動銷毀。
我們跟據物件的宣告方式分兩種情況來講:
1、動態宣告的物件
這種宣告方式下系統會自動銷毀不再使用的物件,對應的物件的析構函式也會被呼叫。例如classname object;這樣宣告的物件,當程式執行到了物件作用域之外或者程式退出,物件都會被銷毀,當然析構函式也會被呼叫。
2、靜態宣告的物件(new等)
這種宣告方式下系統不會主動幫你銷毀物件,對應的析構函式也不會被主動呼叫,除非你的程式顯式地呼叫delete等函式。這種情況下只要你不去delete,物件的析構函式永遠不會呼叫,即便這個物件的記憶體空間已經洩露或者程式退出。
C 析構函式的呼叫時機
結論 只有當類的某個例項化物件的建構函式執行完畢,而且當該物件退出作用域時,才會執行析構函式。如果在執行建構函式的過程中丟擲了異常,就不會呼叫析構函式 上測試 1 class test 210 test 1114 15 16int main 1722 catch 2326 return0 27 執行...
C 中拷貝函式的呼叫時機
1.用已經建立好的物件來初始化新的物件 2.值傳遞的方式給函式引數傳值 3.以值方式返回區域性物件 define crt secure no warnings includeusing namespace std class person person int a person const pers...
C 拷貝函式呼叫時機
c 中的拷貝構造函式呼叫時機通常有三種情況 示例 include using namespace std class person person int age person const person p 析構函式在釋放記憶體之前呼叫 person public int mage 1.使用乙個已經建...