虛函數的定義要遵循以下重要規則:
1.如果虛函數在基類與派生類中出現,僅僅是名字相同,而形式參數不同,或者是返回類型不同,那麼即使加上了virtual關鍵字,也是不會進行滯後聯編的。
2.只有類的成員函數才能說明為虛函數,因為虛函數僅適合用與有繼承關系的類對象,所以普通函數不能說明為虛函數。
3.靜態成員函數不能是虛函數,因為靜態成員函數的特點是不受限制於某個對象。
4.內聯(inline)函數不能是虛函數,因為內聯函數不能在運行中動態確定位置。即使虛函數在類的內部定義,但是在編譯的時候系統仍然將它看做是非內聯的。
5.構造函數不能是虛函數,因為構造的時候,對象還是一片未定型的空間,只有構造完成後,對象才是具體類的實例。
6.析構函數可以是虛函數,而且通常聲名為虛函數。