1、一般的同名函數
c++規定,當一個成員函數被聲明為虛函數后,其派生類中的同名函數都自動成為虛函數。因此,在子類重新聲明該虛函數時,可以加,也可以不加,但習慣上每一層聲明函數時都加virtual,使程序更加清晰。
2、析構函數(自然并非同名)
如果存在繼承,那么父類的析構函數,一定要定義為virtual虛函數。只有這樣,在delete 父類指針的時候,才會利用虛函數的多態特性,逐級調用子類的析構函數,進而釋放子類中申請的“堆內存”!!
如果存在“多層/多級”繼承(A->B->C),每一層級的父類,析構函數都要定義為virtual虛函數。