以多繼承中基類中的析構函式是否是virtual有關......多型的形式呼叫base1 *p=new derived;或者 derived der;base1 *p=&der;
最後delete p的時,是否呼叫了其他的的如之類der中的函式以及base2的析構函式相關。可以看出如果沒有virtual的話,屬於安全有問題的,可能產生memory leakage的問題。
(1)base2中析構函式帶virtual的情況:
(2)base2中析構函式不帶virtual的情況:
有關虛(virtual)析構函式
記得有一次在面試的時候被問到虛析構函式的作用,當時回答得不是很好,故現在想重新整理下。先看下下面的 include iostream using namespace std class base base 大家關鍵是看這句 virtual void f class derived public ba...
C 虛析構函式 純虛析構函式
虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...
C 虛析構函式 純虛析構函式
虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...