C 學習筆記 呼叫建構函式和析構函式的順序

2021-08-17 05:12:35 字數 436 閱讀 1409

在一般情況下,呼叫析構函式的次序正好與呼叫析構函式的次序相反;最先被呼叫建構函式,其對應的析構函式最後被呼叫,而最後被呼叫的建構函式,其對應的析構函式最先被呼叫。

(1)在全域性範圍中定義的物件,它的建構函式在檔案中的所有函式(包含main函式)執行之前呼叫。如果乙個程式中有多個檔案,而不同的檔案中都定義了全域性物件,則這些物件的建構函式的執行順序是不確定的。

當main函式執行完畢或者呼叫exit函式時,呼叫析構函式。

(2)如果定義的是區域性自動物件,則在建立物件時呼叫其建構函式。如果函式被多次呼叫,則在每次建立物件時都要呼叫析構函式,在函式呼叫結束、物件釋放時先呼叫析構函式。

(3)如果在函式中定義靜態(static)區域性物件,則只在程式第一次呼叫此函式建立物件時呼叫建構函式一次,在呼叫結束時物件不釋放,因此也不呼叫析構函式,只在main函式結束或呼叫exit函式結束程式時,才呼叫析構函式。

c 學習筆記 建構函式和析構函式

一 建構函式作用 幫助我們初始化物件 給物件的每個屬性依次的賦值 建構函式是乙個特殊的方法 建構函式沒有返回值,連 void 也不能寫。建構函式的名稱必須跟類名一樣。建立物件的時候會執行建構函式建構函式是可以有過載的。類當中會有乙個預設的無引數的建構函式,當你寫乙個新的建構函式之後,不管是有引數的還...

C 顯示呼叫建構函式和析構函式

建構函式和析構函式可不可以顯示呼叫 class a a void main 此時的輸出結果是 a constructor a constructor 顯示呼叫建構函式的結果。a destrucotr 顯示呼叫析構函式的結果,此時物件並沒有銷毀。a destructor 物件銷毀時自動呼叫析構函式。總...

C 顯示呼叫建構函式和析構函式

類在new的時候其實做了兩件事情 1 呼叫malloc分配所需的記憶體 實際上是呼叫operator new 2 呼叫建構函式 類在delete的時候其實也做了兩件事 1 呼叫析構函式 2 呼叫free釋放記憶體 實際上是呼叫operator delete 直接通過 類名 建構函式或析構函式clas...