派生類經常(但不總是)覆寫它繼承的虛函數。如果沒有覆寫,派生類會直接繼承其在基類中的版本。
派生類可以在它覆寫的函數前使用virtual關鍵字,但不是非得這麼做。
c++11允許派生類使用override關鍵字,顯式地注明它重寫了基類中的某個虛函數。
常見的不能聲明為虛函數的有:非成員函數(含友元函數);靜态成員函數;構造函數。
1.為什麼c++不支援普通函數和友元函數為虛函數?
它們不能被繼承。
2.為什麼c++不支援構造函數為虛函數?
構造函數不能被繼承,因而不能聲明為virtual函數。
3.為什麼c++不支援靜态成員函數為虛函數?
文法規定。
多繼承時,多個基類中的同名成員在派生類中由于标示符不唯一而出現二義性。可通過類的作用域标示符或重載解決問題。
在多繼承中,當派生類的一些直接基類又是從另一個共同基類派生而來時,會出現間接二義性。
解決辦法:
虛基類。
普通的消除二義性辦法。