1、首先回顧一下虛函數的概念
虛函數:不代表一定需要子類去實現,而是可以通過基類的指針調用子類的此函數。
純虛函數:一定需要子類去實現它,它定義的僅僅是一組行爲,擁有純虛函數的類即爲抽象類,只能當做基類,無法實例化。
2、爲什麼叫“虛”函數呢
正是這個函數調用的不可預測性,而這種不可預測性即函數的調用在編譯階段無法確定,待執行時才能確定函數調用的真正地址
3、爲什麼當做基類的類的析構函數一定要是“虛函數”?
析構函數執行時先調用派生類的析構函數,其次才調用基類的析構函數。如果析構函數不是虛函數,而程序執行時又
要通過基類的指針去銷燬派生類的動態對象,那麼用delete銷燬對象時,只調用了基類的析構函數,未調用派生類的
析構函數。這樣會造成銷燬對象不完全、內存泄露。