首頁 >後端開發 >C#.Net教程 >C++11新特性- 純虛擬函式和final說明符的用法

C++11新特性- 純虛擬函式和final說明符的用法

php是最好的语言
php是最好的语言原創
2018-08-01 13:40:292503瀏覽

個人以為,C 之所以適合架構設計,很大一個原因就是它可以對未來進行程式設計。例如可以透過public/protected/private來限定衍生類別對基底類別成員的訪問,可以定義抽象類別要求派生類別必須實現的介面等。

當我們宣告/定義了一個虛擬函數時候,衍生類別可以選擇覆寫這個虛擬函數,也可以選擇不覆寫。關於這一點,C 也提供了必要的方法,來要求衍生類別覆寫某些方法,這也可以看作是一種對將來程式設計。

純虛函數

這並不是新技術,功能也非常簡單:就是一旦某個基底類別宣告了某個純虛函數,它的衍生類別在實例化的時候就必須覆寫這個函數。

C++11新特性- 純虛擬函式和final說明符的用法

 本例中註解掉了sub::f1()方法,所以在第27行就會發生編譯錯誤。

final說明符

一般說來,有要求的覆蓋的方法,就應該有禁止覆蓋的手段。但不知道為什麼,這個功能到了C 11才被引進。使用方法也很簡單:只要在函數宣告的後面加上final說明符即可。

C++11新特性- 純虛擬函式和final說明符的用法

 程式碼基本上沒變,只是base::f1()宣告的後面換成了final說明符。這時如果定義了sub::f1()方法,就會產生如上圖的編譯錯誤。

作者觀點

本文根據作者個人的理解,將純虛函數和final說明符放到一起說明。如有不準確之處,歡迎補充和糾正。

相關文章:

詳談c 11 final與override說明符

C 11新功能中auto 和 decltype 區別與聯繫

相關影片:

C 語言教學

以上是C++11新特性- 純虛擬函式和final說明符的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn