析构设置为虚函数的原因
生活随笔
收集整理的這篇文章主要介紹了
析构设置为虚函数的原因
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么要將析構函數定義為虛函數呢?由于可以使用父類指針保存子類對象的首地址,因此當時用父類指針指向子類堆對象時就會出問題。當使用delete釋放對象的空間時,如果析構函數沒有定義為虛函數,那么編譯器就會按指針的類型調用父類的構造函數,從而引發錯誤。而使用了析構函數后,會訪問虛表并調用對象的析構函數。實現過程如下:
對于沒有派生和繼承關系 的類結構,是否將析構函數聲明為虛析構函數不會影響到調用的過程,但是在編寫析構函數時形成好習慣,無論當前是否有派生或繼承關系,都應將析構聲明為虛析構函數。
總結
以上是生活随笔為你收集整理的析构设置为虚函数的原因的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 定义派生类和继承类(从汇编分析)
- 下一篇: 详解虚函数的实现过程之菱形继承修罗场(6