C 11新特性(57) final說明符

2021-08-21 23:44:28 字數 789 閱讀 2057

個人以為,c++之所以適合架構設計,很大乙個原因就是它可以對將來程式設計。比如可以通過public/protected/private來限定派生類對基類成員的訪問,可以定義抽象類要求派生類必須實現的介面等。

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

純虛函式

這並不是乙個新技術,功能也非常簡單:就是一旦某個基類宣告了某個純虛函式,它的派生類在例項化的時候就必須覆蓋這個函式。

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

final說明符

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

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

作者觀點

C 11新特性說明

include include include void test auto c 11之前需要寫明變數的型別 list iterator it find c.begin c.end 12 c 11之後可以使用auto來定義,ide自動推斷其型別 auto it2 find c.begin c.end...

C 11新特性之final和override

在正常的編碼中,根據業務需要,派生類可以過載父類的成員函式,但是在某些場景必須只能用父類的成員函式進行操作或者父類的成員函式已經可以滿足業務需求,這個時候限定不能去過載。但是這只是乙個個人行為意識的限定,如果換人來開發肯定會不注意這一點,為了避免這樣的錯誤產生,引入了final,在基類的函式中加入f...

C 11新特性學習

lambda表示式用於建立匿名的函式物件,語法為 函式可訪問的的外部變數 函式引數 返回值型別 如 int a 1,b 2 int c b int x int b 表示函式中可以訪問外部變數b,而且引數b是按值傳遞,b 表示引數b是按引用傳遞,表示可以訪問所有外部變數,並且是用按值傳遞方式,類似,也...