析構函數是否必須爲虛函數?爲何?

p517 在C++中,基類指針可以指向一個派生類的對象。如果基類的析構函數不是虛函數,當需要delete這個指向派生類的基類指針時,就只會調用基類的析構函數,而派生類的析構函數無法被調用。容易造成內存泄漏。 設計析構函數爲虛函數,主要是考慮到繼承。 當A爲基類,B爲A的繼承類,考慮如下情況: A *p = new B(); ..... delete p; 如果此時A的析構函數不是虛函數,那麼在de
相關文章
相關標籤/搜索