delete基類指標能不能釋放子類物件

2021-10-20 18:53:26 字數 439 閱讀 5606

#include class a

~a()

};class b : public a

~b()

};int main()

執行結果:ab

~a基類析構函式加上virtual再試試

#include class a

virtual ~a()

};class b : public a

~b()

};int main()

執行結果:ab

~b~a

如果基類的析構函式不是虛函式,那麼delete基類指標不能釋放子類物件,不會呼叫子類物件的析構函式,這種做法是不完善的。

如果基類的析構函式是虛函式,那麼delete基類指標是可以呼叫子類物件的析構函式的。

子類能不能繼承父類的成員變數

1 關於私有成員變數 無論父類中的成員變數是私有的 共有的 還是其它型別的,子類都會擁有父類中的這些成員變數。但是父類中的私有成員變數,無法在子類中直接訪問,必須通過從父類中繼承得到的protected public方法 如getter setter方法 來訪問。2 關於靜態成員變數 無論父類中的成...

java中子類能不能繼承父類構造方法

結果有些和想象中的不一樣吧。原因如下 其實每個子類構造方法的第一條語句,都是隱含地呼叫super 如果父類沒有這種形式的建構函式,那麼在編譯的時候就會報錯。所以父類中的構造方法是不能繼承的,但是在例項化子類的時候會呼叫父類的構造方法,這樣就能解釋下面這種情況了。面試題目1 指出下面程式的執行結果 p...

在類的成員函式中能不能呼叫delete this?

如圖 解析 1.在類的成員函式中能不能呼叫delete this?答案是肯定的,能呼叫,而且很多老一點的庫都有這種 假設這個成員函式名字叫release,而delete this就在這個release方法中被呼叫,那麼這個物件在呼叫release方法後,還能進行其他操作,如呼叫該物件的其他方法麼?答...