爲什麼析構函數必須是虛函數?爲什麼C++默認的析構函數不是虛函數?

將可能會被繼承的父類的析構函數設置爲虛函數,可以保證當我們new一個子類,然後使用基類指針指向該子類對象,釋放基類指針時可以釋放掉子類的空間,防止內存泄漏。

C++默認的析構函數不是虛函數是因爲虛函數需要額外的虛函數表和虛表指針,佔用額外的內存。而對於不會被繼承的類來說,其析構函數如果是虛函數,就會浪費內存。因此C++默認的析構函數不是虛函數,而是隻有當需要當作父類時,設置爲虛函數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章