C 析構函式詳解

2021-10-08 10:04:40 字數 554 閱讀 2246

建立物件時系統會自動呼叫建構函式進行初始化工作,同樣,銷毀物件時系統也會自動呼叫乙個函式來進行清理工作,例如釋放分配的記憶體、關閉開啟的檔案等,這個函式就是析構函式。

析構函式(destructor)也是一種特殊的成員函式,沒有返回值,不需要程式設計師顯式呼叫(程式設計師也沒法顯式呼叫),而是在銷毀物件時自動執行。建構函式的名字和類名相同,而析構函式的名字是在類名前面加乙個~符號。

注意:析構函式沒有引數,不能被過載,因此乙個類只能有乙個析構函式。如果使用者沒有定義,編譯器會自動生成乙個預設的析構函式。

上節我們定義了乙個 vla 類來模擬變長陣列,它使用乙個建構函式為陣列分配記憶體,這些內存在陣列被銷毀後不會自動釋放,所以非常有必要再新增乙個析構函式,專門用來釋放已經分配的記憶體。請看下面的完整示例:

#include 

using namespace std;

class vla{

public:

vla(int len)

; //建構函式

~vla(

)

C 析構函式詳解

析構函式 與建構函式功能相反,析構函式是完成物件的銷毀,區域性物件銷毀工作是由編譯器完成的。而物件在銷毀時會自動呼叫析構函式,完成類的一些資源清理工作。1 在下面這個類中,並沒有顯示定義析構函式,但是編輯器不會生成預設的析構函式,因為在這個類中沒有進行資源的管理,所以不需要析構函式。class da...

C 建構函式,析構函式詳解

目錄 上期了解c 類中有public protected private三種訪問許可權。肯定會有人疑惑,c 為什麼要設定這三個許可權呢 本期內容就是圍繞上面的問題展開說明 開始的文章就提到過,類是 oop 物件導向程式設計的基礎 那麼物件導向程式設計究竟是個什麼東東呢 百科是這樣解釋的 通俗的來說就...

C 析構函式 虛析構函式

1.為什麼要定義虛析構函式?如果有乙個帶有虛函式功能的類,則它需要乙個虛析構函式,原因如下 1 如果乙個類有虛函式功能,它經常作為乙個基類使用 2 如果它是乙個基類,它的派生類經常使用new來分配 3 如果乙個派生類物件使用new來分配,並且通過乙個指向它的基類的指標來控制,那麼它經常通過乙個指向它...