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