C 虛析構函式

2021-07-05 12:54:04 字數 1127 閱讀 3950

c++中的虛析構函式。

虛析構函式常用在類的有繼承關係的類中。虛析構函式可以保證類中的資源被有效的**,防止記憶體的洩露。

c++中正確的析構順序是 派生類析構函式->基類析構函式。

記憶體的洩露會發生在基類指標指向派生類物件的時候,(即多型的時候)。

例如如下**:

可以看出來:派生類的析構函式沒有被呼叫,若派生類的記憶體資源需要通過析構函式進行**,則會發生記憶體的洩露。

正確的方法:將基類的析構函式宣告為虛函式。則多型時,則delete基類指標的時候,會按照派生類->基類的順序呼叫析構函式。(從而避免記憶體的洩露)

tips:基類將函式宣告為virtual,派生類也預設為virtual

示例:

C 析構函式 虛析構函式

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

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

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

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

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