了解一下C 的析構函式

2021-09-22 08:04:58 字數 444 閱讀 6507

我不是寫部落格的,我只是部落格的搬運工。是寫還是不寫呢,好像沒什麼用呀。其實我感覺《c++primer》裡面對於析構函式講解的不是很詳細,總感覺析構函式的知識點不止這麼多呀(可能我看的不仔細吧)……

(這裡糾正一下,之前我用的是vs2017的空專案,用system("pause")來暫停控制台,導致了析構函式的列印以及反彙編都沒有看到呼叫析構函式,用控制台程式的時候就會呼叫析構函式,看來,只要構造了並且自己寫了析構函式,就會被呼叫,如果自己沒寫,也沒有特殊的建構函式,也不會呼叫)

析構函式和建構函式很類似,是互補的一對,無返回值,沒有引數,還有就是每個類只有乙個析構函式,only one。並不是每個物件結束都需要呼叫析構函式,除非有需要釋放的資源,比如你申請的記憶體,或者用來釋放什麼互斥資源。主要就是這兩大類,普通的資源沒必要用到析構函式來釋放。

我覺得析構函式知道這麼多就可以了,還有就是注意基類中需要virtual析構函式。

C 析構函式 虛析構函式

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

C 了解建構函式和析構函式

一般來說,每次都是建立乙個物件,再在類的公有函式裡設定資訊,那能不能在建立函式的同時設定資訊呢?建構函式是乙個特殊的成員函式,主要作用是初始化物件的記憶體空間。雖然稱為建構函式,但是其核心並不是開空間建立物件,而是對物件記憶體空間的初始化。1 函式名與類名相同 2 無返回值 3 物件例項化時編譯器自...

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

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