天天看點

虛函數、抽象類及虛基類虛函數、抽象類及虛基類

派生類經常(但不總是)覆寫它繼承的虛函數。如果沒有覆寫,派生類會直接繼承其在基類中的版本。

派生類可以在它覆寫的函數前使用virtual關鍵字,但不是非得這麼做。

c++11允許派生類使用override關鍵字,顯式地注明它重寫了基類中的某個虛函數。

虛函數、抽象類及虛基類虛函數、抽象類及虛基類

常見的不能聲明為虛函數的有:非成員函數(含友元函數);靜态成員函數;構造函數。

1.為什麼c++不支援普通函數和友元函數為虛函數?

它們不能被繼承。

2.為什麼c++不支援構造函數為虛函數?

構造函數不能被繼承,因而不能聲明為virtual函數。

3.為什麼c++不支援靜态成員函數為虛函數?

文法規定。

多繼承時,多個基類中的同名成員在派生類中由于标示符不唯一而出現二義性。可通過類的作用域标示符或重載解決問題。

在多繼承中,當派生類的一些直接基類又是從另一個共同基類派生而來時,會出現間接二義性。

解決辦法:

虛基類。

普通的消除二義性辦法。

繼續閱讀