c 虛析構函式

2021-06-07 20:34:40 字數 1003 閱讀 5096

c++必須使用虛析構函式的要點:

1.該類分配了資源,而這些資源又不會由成員函式自動釋放

2.通常在建構函式中包含new操作,析構函式中包含delete操作;

3.虛析構函式只有在該類為基類的情況下才有用,即該類被繼承的情況;

下面的示例顯示了,當基類base的析構函式為虛析構函式和非虛析構函式的情況下,析構函式的呼叫情況:

標頭檔案1:

class base

;class derive : public base

;

標頭檔案2:

class base

;class derive : public base

;

原始檔:

base::base(void)

base::~base(void)

derive::derive(void)

derive::~derive(void)

呼叫情況:

base *p = new derive;

delete p;

輸出情況:

析構函式為非虛函式的情況:

base constructor ...

derive constructor ...

base destructor ...

析構函式為非虛函式的情況:

base constructor ...

derive constructor ...

derive destructor ...

base destructor ...

C 析構函式 虛析構函式

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

C 虛析構函式 純虛析構函式

虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...

C 虛析構函式 純虛析構函式

虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...