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

來源:互聯網
上載者:User
個人以為,C++之所以適合架構設計,很大一個原因就是它可以對將來編程。比如可以通過public/protected/private來限定衍生類別對基類成員的訪問,可以定義抽象類別要求衍生類別必須實現的介面等。

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

純虛函數

這並不是一個新技術,功能也非常簡單:就是一旦某個基類聲明了某個純虛函數,它的衍生類別在執行個體化的時候就必須覆蓋這個函數。

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

final說明符

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

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

作者觀點

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

相關文章:

詳談c++11 final與override說明符

C++11新特性中auto 和 decltype 區別和聯絡

相關視頻:

C 語言教程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.