個人以為,C 之所以適合架構設計,很大一個原因就是它可以對未來進行程式設計。例如可以透過public/protected/private來限定衍生類別對基底類別成員的訪問,可以定義抽象類別要求派生類別必須實現的介面等。
當我們宣告/定義了一個虛擬函數時候,衍生類別可以選擇覆寫這個虛擬函數,也可以選擇不覆寫。關於這一點,C 也提供了必要的方法,來要求衍生類別覆寫某些方法,這也可以看作是一種對將來程式設計。
純虛函數
這並不是新技術,功能也非常簡單:就是一旦某個基底類別宣告了某個純虛函數,它的衍生類別在實例化的時候就必須覆寫這個函數。
本例中註解掉了sub::f1()方法,所以在第27行就會發生編譯錯誤。
final說明符
一般說來,有要求的覆蓋的方法,就應該有禁止覆蓋的手段。但不知道為什麼,這個功能到了C 11才被引進。使用方法也很簡單:只要在函數宣告的後面加上final說明符即可。
程式碼基本上沒變,只是base::f1()宣告的後面換成了final說明符。這時如果定義了sub::f1()方法,就會產生如上圖的編譯錯誤。
作者觀點
本文根據作者個人的理解,將純虛函數和final說明符放到一起說明。如有不準確之處,歡迎補充和糾正。
相關文章:
相關影片:
以上是C++11新特性- 純虛擬函式和final說明符的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!