閱讀220 返回首頁    go 阿裏雲 go 技術社區[雲棲]


虛函數、抽象類及虛基類

虛函數、抽象類及虛基類

虛函數及抽象類:

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

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

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

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

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

它們不能被繼承。

2.為什麼C++不支持構造函數為虛函數?

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

3.為什麼C++不支持靜態成員函數為虛函數?

語法規定。


 虛基類

多繼承時,多個基類中的同名成員在派生類中由於標示符不唯一而出現二義性。可通過類的作用域標示符或重載解決問題。
在多繼承中,當派生類的一些直接基類又是從另一個共同基類派生而來時,會出現間接二義性。
解決辦法:
虛基類。
普通的消除二義性辦法。

最後更新:2017-04-03 12:55:47

  上一篇:go 為Ubuntu添加PATH環境變量
  下一篇:go 連載:麵向對象葵花寶典:思想、技巧與實踐(21) - SSD