C 入門之一 類 析構函式)

2021-07-13 08:09:48 字數 920 閱讀 6641

定義:當乙個物件的生命週期結束時,系統會自動呼叫乙個成員函式,它沒有返回值,沒有引數,不能過載,這個函

數就是析構函式。是特殊的成員函式。

函式名是類名前面加上乙個「~」符號,功能與建構函式相反。

呼叫析構函式的次序正好與呼叫建構函式的次序相反。

特徵:

1、在類名加上字元~

2、無引數,無返回值

3、乙個類只有乙個析構函式(所以不能過載)

4、物件生命週期結束時,系統會自動呼叫析構函式

5、注意:析構函式體內並不是刪除物件,而是做一些清理工作。

對於物件生命週期結束的幾種情況:

①如果在乙個函式中定義了乙個物件(它是自動區域性物件),當這個函式被呼叫結束時,物件應該釋放,在物件釋放前

自動執行析構函式。

②static區域性物件在函式呼叫結束時物件並不釋放,因此也不呼叫析構函式,只在main函式結束或呼叫exit函式結束

程式時,才呼叫static區域性物件的析構函式。

③如果定義了乙個全域性物件,則在程式的流程離開其作用域時(如main函式結束或呼叫exit函式) 時,呼叫該全 局對

象的析構函式。

④如果用new運算子動態地建立了乙個物件,當用delete運算子釋放該物件時,先呼叫該物件的析構函式。

析構函式的作用

在撤銷物件占用的記憶體空間之前完成一些清理工作,

使這部分記憶體空間可以分配給新的物件使用。

舉例:

class a

~a()

{ cout<<" ~a() "<

實際上,析構函式除了釋放資源的作用外,還可以用來執行「使用者希望在最後一次使用物件後的一些操作」。

C 類析構函式

析構函式是c 釋放類物件的函式,如果在類中不寫析構函式,c 編譯器會自動補上析構函式。如果人為定義了析構函式,那麼會呼叫人為定義的。預設析構函式不會釋放成員指標變數所指向的記憶體空間,如果要釋放的話,還需要人為定義釋放。析構函式在物件釋放的時候自動呼叫,在delete 刪除物件的時候,也會呼叫析構函...

C 類建構函式 析構函式

類的建構函式是類的一種特殊的成員函式,它會在每次建立類的新物件時執行。建構函式的名稱與類的名稱是完全相同的,並且不會返回任何型別,也不會返回 void。建構函式可用於為某些成員變數設定初始值。下面的例項有助於更好地理解建構函式的概念 include using namespace std class...

C 類建構函式 析構函式

類的建構函式是類的一種特殊的成員函式,它會在每次建立類的新物件時執行。建構函式的名稱與類的名稱是完全相同的,並且不會返回任何型別,也不會返回 void。建構函式可用於為某些成員變數設定初始值。下面的例項有助於更好地理解建構函式的概念 include using namespace std class...