C++ override

1、公有繼承
公有繼承包含兩部分,一是函數接口,而是函數實現
1.1 純虛函數
純虛函數,繼承的是基類中成員函數的接口且要在派生類中重寫成員函數的實現
要調用基類的成員函數,須加類作用域操作符::
1.2 普通虛函數
虛函數會在基類中,定義一個缺省的實現,表示繼承的是基類成員函數接口和缺省實現,由派生類選擇是否重寫該函數。
實際上,允許虛函數同時繼承接口和缺省實現是危險的。最好是基類實現缺省行爲,但只有在派生類要求時才提供該缺省行爲
方法一
純虛函數+缺省實現,因爲是純虛函數所以只有接口被繼承,其缺省的實現不會被繼承。派生類要想使用該缺省的實現,必須顯式地調用
方法二
C++11中使用關鍵字override,可以避免這樣的不小心

override
可以避免派生類中忘記重寫虛函數的錯誤
在派生類中,override繼承自基類成員函數的實現,要滿足:
基類中,成員函數聲明爲virtual
基類和派生類中,成員函數的返回類型和異常規格必須兼容
基類和派生類中,成員函數名、形參類型、常量屬性和引用限定符必須完全相同
override關鍵字可以顯示地在派生類中聲明,哪些成員函數需要被重寫,如果沒被重寫,則編譯器會報錯。
這樣即使不小心漏寫了虛函數重寫的某個苛刻條件,也可以通過編譯器的報錯,快速改正錯誤

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章