C++:38---final关键字和禁止类继承
生活随笔
收集整理的這篇文章主要介紹了
C++:38---final关键字和禁止类继承
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、final關(guān)鍵字
C++新標(biāo)準(zhǔn)規(guī)定:如果我們定義的類不希望被其他類繼承,那么可以在類名后加一個final關(guān)鍵字
但是final類仍然可以繼承其他類。
實際上C++11的關(guān)鍵字final有兩個用途。第一,它阻止了從類繼承;第二,阻止一個虛函數(shù)的重載。
二、演示案例
class A final{}; class B:public A{}; //報錯,A是final的 class A {}; class B final :public A{}; //正確 class C:public B {}; //錯誤
某些實現(xiàn)系統(tǒng)服務(wù)、基礎(chǔ)功能和加密等的類通常是不允許有子類的;實現(xiàn)者不想客戶端從這些類派生新類而修改他們。標(biāo)準(zhǔn)庫容器,如std:: vector和std:: list的無子類化類型就是另一個很好的例子。這些容器沒有虛擬析構(gòu)函數(shù)或者確切地說沒有任何虛成員函數(shù)。
然而,程序員常常在沒有意識到風(fēng)險的情況下堅持從std::vector派生。在C++11中,無子類類型將被聲明為如下所示:
class TaskManager {/*..*/} final;class PrioritizedTaskManager: public TaskManager {}; //compilation error: base class TaskManager is final同樣,你可以通過
總結(jié)
以上是生活随笔為你收集整理的C++:38---final关键字和禁止类继承的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 理解Caffe的网络模型
- 下一篇: mysql导入source数据库sql的