C 虛析構函式

2021-06-18 22:12:02 字數 524 閱讀 9906

在c++中,建構函式不能被宣告為虛函式,但是析構函式可以被宣告為虛函式。只要基類的析構函式被宣告為虛函式了,則它的派生類的析構函式,無論是否使用virtual,都將自動被說明為虛函式。

當使用delete運算子和析構函式一起使用時,delete乙個物件,則delete隱含對析構函式的呼叫,如果析構函式不是虛函式,則子類的物件的析構函式將不會被自動呼叫。

1 基類的析構函式被宣告為虛函式,則它的派生類的析構函式,無論是否使用virtual,都將自動被說明為虛函式。

2,一般在定義類時,建議都將析構函式宣告為虛函式。要鎮用。

3.delease隱含對析構函式的呼叫,如果析構函式不是虛函式,則子類的物件的析函式將不會被自動呼叫。

#include 

class base

virtual ~base()

};class derive : public

base

~derive()

};int main(int argc, const

char * argv)

C 析構函式 虛析構函式

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

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

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

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

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