@override报错_C++ 多态性:C++11:override 与 final(学习笔记:第8章 09)
生活随笔
收集整理的這篇文章主要介紹了
@override报错_C++ 多态性:C++11:override 与 final(学习笔记:第8章 09)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C++11:override 與 final[1]
override
- 多態行為的基礎:基類聲明虛函數,繼承類聲明一個函數覆蓋該虛函數
- 覆蓋要求: 函數簽名(signature)完全一致
- 函數簽名包括:函數名 參數列表 const
下列程序就僅僅因為疏忽漏寫了const,導致多態行為沒有如期進行:
源代碼:
#include程序運行結果:
顯式函數覆蓋
- C++11 引入顯式函數覆蓋,在編譯期而非運行期捕獲此類錯誤。
- 在虛函數顯式重載中運用,編譯器會檢查基類是否存在一虛擬函數,與派生類中帶有聲明override的虛擬函數,有相同的函數簽名(signature);若不存在,則會回報錯誤。
修改上例,發現添加override,會在編譯階段報錯,方便查找錯誤地方。
在編譯階段發現錯誤后,對程序進行修改:
#include程序運行結果:
final
- C++11提供的final,用來避免類被繼承,或是基類的函數被改寫
- 例:
參考
總結
以上是生活随笔為你收集整理的@override报错_C++ 多态性:C++11:override 与 final(学习笔记:第8章 09)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何确定python开发环境已经配置好_
- 下一篇: s3c2440移植MQTT