C 析構函式

2022-01-11 13:27:27 字數 714 閱讀 9867

析構函式是建構函式的互補:當物件超出作用域或動態分配的物件被刪除時,將自動呼叫析構函式。

析構函式可用於釋放物件時構造或在物件的生命期中所獲取的資源。

不管類是否定義了自己的析構函式,編譯器都自動執行類中非static 資料成員的析構函式。

(1)、析構函式沒有返回值和引數列表

(2)、析構函式不能過載

(3)、析構函式由系統自動呼叫,不能顯式呼叫

(4)、析構函式可以是inline函式

(5)、析構函式應該設定為類的公有成員

(6)、每個類有應該有乙個析構函式,如果沒有顯式定義,那麼系統會自動生成乙個預設的析構函式

#include using

namespace

std;

class

examplea

};class

exampleb

;exampleb::~exampleb()

int main(void

)

作用是當用乙個基類的指標刪除乙個派生類的物件時,派生類的析構函式會被呼叫,

總而言之,就是在實現多型的時候不造成記憶體洩露。

當然,並不是要把所有類的析構函式都寫成虛函式。因為當類裡面有虛函式的時候,

編譯器會給類新增乙個虛函式表,裡面來存放虛函式指標,這樣就會增加類的儲存空間。所

以,只有當乙個類被用來作為基類的時候,才把析構函式寫成虛函式。

C 析構函式 虛析構函式

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

C 析構函式和虛析構函式。

析構函式如果不是虛的話,基類的析構函式將不會被呼叫。多型時,也就是派生類被基類指標所指,或者被基類別名 虛析構函式,被呼叫時,其自身的析構函式和基類的析構函式都將會被呼叫。非虛的時候,不進行多型,只有基類的會被呼叫。純虛析構函式 定義的時候除了加 0 還需要給出函式的實現。因為當遞迴的呼叫析構函式時...

C 建構函式 析構函式 虛析構函式

一般地,建立物件和刪除物件時,父類建構函式 子類建構函式 子類析構函式 父類析構函式。特例 如果用new建立了乙個物件,並將父類的指標指向這個子類的物件,那麼用delete撤銷物件時,系統只執行基類的析構函式,而不執行派生類的析構函式。如果希望按照子類析構函式 父類析構函式的順序執行,那麼應該將基類...