c++中的虛析構函式。
虛析構函式常用在類的有繼承關係的類中。虛析構函式可以保證類中的資源被有效的**,防止記憶體的洩露。
c++中正確的析構順序是 派生類析構函式->基類析構函式。
記憶體的洩露會發生在基類指標指向派生類物件的時候,(即多型的時候)。
例如如下**:
可以看出來:派生類的析構函式沒有被呼叫,若派生類的記憶體資源需要通過析構函式進行**,則會發生記憶體的洩露。
正確的方法:將基類的析構函式宣告為虛函式。則多型時,則delete基類指標的時候,會按照派生類->基類的順序呼叫析構函式。(從而避免記憶體的洩露)
tips:基類將函式宣告為virtual,派生類也預設為virtual
示例:
C 析構函式 虛析構函式
1.為什麼要定義虛析構函式?如果有乙個帶有虛函式功能的類,則它需要乙個虛析構函式,原因如下 1 如果乙個類有虛函式功能,它經常作為乙個基類使用 2 如果它是乙個基類,它的派生類經常使用new來分配 3 如果乙個派生類物件使用new來分配,並且通過乙個指向它的基類的指標來控制,那麼它經常通過乙個指向它...
C 虛析構函式 純虛析構函式
虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...
C 虛析構函式 純虛析構函式
虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...