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

2021-12-30 01:20:00 字數 436 閱讀 9552

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

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

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

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

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

C 學習筆記之建構函式和析構函式

c 學習筆記之建構函式和析構函式 c 利用了建構函式和析構函式來解決成員變數初始化和銷毀清理工作,這兩個函式將會被編譯器自動呼叫,完成物件初始化和清理工作。物件的初始化和清理工作是編譯器強制要求我們做的事情,因此如果我們不提供建構函式和析構函式,編譯器會給我們提供預設的建構函式和析構。編譯器所提供的...

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

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

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

在一般情況下,呼叫析構函式的次序正好與呼叫析構函式的次序相反 最先被呼叫建構函式,其對應的析構函式最後被呼叫,而最後被呼叫的建構函式,其對應的析構函式最先被呼叫。1 在全域性範圍中定義的物件,它的建構函式在檔案中的所有函式 包含main函式 執行之前呼叫。如果乙個程式中有多個檔案,而不同的檔案中都定...