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 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...