c 虛析構函式 避免記憶體洩漏

2021-09-06 19:38:37 字數 572 閱讀 4405

c++  虛析構函式:

虛析構函式

(1)虛析構函式即:定義宣告析構函式前加virtual 修飾, 如果將基類的析構函式宣告為虛析構函式時,

由該基類所派生的所有派生類的析構函式也都自動成為虛析構函式。

(2)基類指標pbase 指向用new動態建立的派生類物件child時,用「delete pbase;」刪除物件分兩種情況:

第一,如果基類中的析構函式為虛析構函式,則會先刪除派生類物件,再刪除基類物件

第二,如果基類中的析構函式為非虛析構函式,則只會刪除基類物件,不會刪除派生類物件,這樣便出現了記憶體洩漏了

#include using

namespace

std;

#include

////

class

base ;

base::~base()

////

class child: public

base ;

child::~child()

intdemo()

intmain()

虛析構函式與記憶體洩漏

1,為什麼要用虛函式?因為在使用基類的引用或指標呼叫乙個虛成員函式時會執行動態繫結。這樣,程式直到執行時才能知道到底呼叫了 的虛函式,從而實現了多型。2,base pbase new son 的執行順序 首先呼叫了基類的預設建構函式 由派生類構造函式呼叫 再呼叫了派生類的預設建構函式。當然,由於基類...

C 箴言 避免析構函式呼叫虛函式

我對效能測試比較有興趣。這裡是從網上看到的討論效能測試和壓力測試的文章。其實,更準確地說,它講述了基於網路的產品的效能測試和壓力測試。並不能代表所有軟體型別的測試。權且貼過來,先解決有無問題,個人觀點可以在後面討論 效能測試就 是用來測試軟體在系統中的執行效能的。效能測試可以發生在各個測試階段中,即...

C 析構函式 虛析構函式

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