記憶體洩露之 虛析構函式

2021-08-20 11:53:12 字數 475 閱讀 4112

#includeclass father ~father() //這樣會導致記憶體洩漏,解決方法:virtual ~father() public: virtual void print() }; class child : public father public: virtual void print() int *m_ileak; }; child::child() void main() 

解決方法,將父類的析構函式宣告為虛函式

1、虛函式的限制:

a).    virtual不能修飾普通函式(全域性函式),只能修飾成員函式

b) .   不能修飾靜態的成員函式

c) .   不能修飾內聯函式(若修飾內聯函式,計算機將自動去掉內聯,使得該函式成為普通的成員函式)

d).  不能修飾建構函式(建構函式是用來建立物件的,而虛函式是建立在物件的基礎上的,在建構函式執行時,物件尚未形成,所以不能修飾為虛函式)

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

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

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

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

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

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