欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解C++成員函數(shù)的override和final說明符的用法

 更新時(shí)間:2016年01月22日 14:40:35   投稿:goldensun  
這篇文章主要介紹了詳解C++成員函數(shù)的override和final說明符的用法,分別用于重寫和禁止繼承類,要的朋友可以參考下

override 說明符

可使用 override 關(guān)鍵字來指定在基類中重寫虛函數(shù)的成員函數(shù)。
語法

function-declaration override;

備注
override 僅在成員函數(shù)聲明之后使用時(shí)才是區(qū)分上下文的且具有特殊含義;否則,它不是保留的關(guān)鍵字。
使用 override 有助于防止您的代碼中出現(xiàn)意外的繼承行為。以下示例演示在未使用 override 的情況下,可能不打算使用派生類的成員函數(shù)行為。編譯器不會發(fā)出此代碼的任何錯(cuò)誤。

class BaseClass
{
  virtual void funcA();
  virtual void funcB() const;
  virtual void funcC(int = 0);
  void funcD();
};

class DerivedClass: public BaseClass
{
  virtual void funcA(); // ok, works as intended

  virtual void funcB(); // DerivedClass::funcB() is non-const, so it does not
             // override BaseClass::funcB() const and it is a new member function

  virtual void funcC(double = 0.0); // DerivedClass::funcC(double) has a different
                   // parameter type than BaseClass::funcC(int), so
                   // DerivedClass::funcC(double) is a new member function

};

當(dāng)使用 override 時(shí),編譯器會生成錯(cuò)誤,而不會在不提示的情況下創(chuàng)建新的成員函數(shù)。

class BaseClass
{
  virtual void funcA();
  virtual void funcB() const;
  virtual void funcC(int = 0);
  void funcD();
};

class DerivedClass: public BaseClass
{
  virtual void funcA() override; // ok

  virtual void funcB() override; // compiler error: DerivedClass::funcB() does not 
                  // override BaseClass::funcB() const

  virtual void funcC( double = 0.0 ) override; // compiler error: 
                         // DerivedClass::funcC(double) does not 
                         // override BaseClass::funcC(int)

  void funcD() override; // compiler error: DerivedClass::funcD() does not 
              // override the non-virtual BaseClass::funcD()
};


若要指定不能重寫函數(shù)且不能繼承類,請使用 final 關(guān)鍵字。


final 說明符
可以使用 final 關(guān)鍵字指定無法在派生類中重寫的虛函數(shù)。您還可以使用它指定無法繼承的類。
語法

function-declaration final;

class class-name final base-classes

備注
final 只有在函數(shù)聲明或類名稱后使用時(shí)才是區(qū)分上下文的且具有特殊含義;否則,它不是保留的關(guān)鍵字。
在類聲明中使用 final 時(shí),base-classes 是聲明的可選部分。
下面的示例使用 final 關(guān)鍵字指定無法重寫虛函數(shù)。

class BaseClass
{
  virtual void func() final;
};

class DerivedClass: public BaseClass
{
  virtual void func(); // compiler error: attempting to 
             // override a final function
};

有關(guān)如何指定可以重寫成員函數(shù)的信息,請參閱 override 說明符"。
下一個(gè)示例使用 final 關(guān)鍵字指定無法繼承類。

class BaseClass final 
{
};

class DerivedClass: public BaseClass // compiler error: BaseClass is 
                   // marked as non-inheritable
{
};

相關(guān)文章

  • ubuntu修改gcc版本的操作方法

    ubuntu修改gcc版本的操作方法

    今天小編就為大家分享一篇ubuntu修改gcc版本的操作方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • C++實(shí)現(xiàn)一個(gè)簡易版的事件(Event)的示例代碼

    C++實(shí)現(xiàn)一個(gè)簡易版的事件(Event)的示例代碼

    之前在?windows系統(tǒng)中開發(fā)應(yīng)用時(shí),?遇到需要進(jìn)行線程同步的時(shí)候幾乎都是使用的事件內(nèi)核對象?Event。本文為大家整理了C++實(shí)現(xiàn)一個(gè)簡易版的事件(Event)的相關(guān)資料,需要的可以參考一下
    2022-11-11
  • C語言驅(qū)動開發(fā)之內(nèi)核解鎖與強(qiáng)刪文件

    C語言驅(qū)動開發(fā)之內(nèi)核解鎖與強(qiáng)刪文件

    在某些時(shí)候我們的系統(tǒng)中會出現(xiàn)一些無法被正常刪除的文件,如果想要強(qiáng)制刪除則需要在驅(qū)動層面對其進(jìn)行解鎖后才可刪掉,本文為大家介紹了內(nèi)核解鎖與強(qiáng)刪文件的方法,希望對大家有所幫助
    2023-06-06
  • C語言動態(tài)規(guī)劃多種背包問題分析講解

    C語言動態(tài)規(guī)劃多種背包問題分析講解

    背包問題(Knapsack problem)是一種組合優(yōu)化的NP完全問題。問題可以描述為:給定一組物品,每種物品都有自己的重量和價(jià)格,在限定的總重量內(nèi),我們?nèi)绾芜x擇,才能使得物品的總價(jià)格最高
    2022-04-04
  • C語言數(shù)據(jù)結(jié)構(gòu)之棧和隊(duì)列的實(shí)現(xiàn)及應(yīng)用

    C語言數(shù)據(jù)結(jié)構(gòu)之棧和隊(duì)列的實(shí)現(xiàn)及應(yīng)用

    棧和隊(duì)列是一種數(shù)據(jù)結(jié)構(gòu),只規(guī)定了性質(zhì),并沒有規(guī)定實(shí)現(xiàn)方式。本文將以順序結(jié)構(gòu)實(shí)現(xiàn)棧,鏈表方式實(shí)現(xiàn)隊(duì)列,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧
    2022-08-08
  • C++中NULL與nullptr的區(qū)別對比

    C++中NULL與nullptr的區(qū)別對比

    nullptr是c++11中的關(guān)鍵字,下面這篇文章主要介紹了C++中NULL與nullptr區(qū)別的相關(guān)資料,對大家來說還是挺實(shí)用的,需要的朋友可以參考下
    2021-05-05
  • VC6.0常用快捷鍵大全

    VC6.0常用快捷鍵大全

    這篇文章主要介紹了VC6.0常用快捷鍵大全,非常實(shí)用,需要的朋友可以參考下
    2014-08-08
  • GCC 編譯c程序的方法及過程解析

    GCC 編譯c程序的方法及過程解析

    目前 Linux 下最常用的 C 語言編譯器是 GCC ( GNU Compiler Collection ),它是 GNU 項(xiàng)目中符合 ANSI C 標(biāo)準(zhǔn)的編譯系統(tǒng),能夠編譯用 C 、 C++ 和 Object C 等語言編寫的程序
    2014-01-01
  • C語言中無符號與有符號及相加問題

    C語言中無符號與有符號及相加問題

    這篇文章主要介紹了C語言中無符號與有符號及相加問題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08
  • C++中的static和const的關(guān)鍵字用法詳解

    C++中的static和const的關(guān)鍵字用法詳解

    這篇文章主要介紹了C++中的static和const的關(guān)鍵字用法詳解,這是一道經(jīng)常在面試中被問到的知識,本文給大家詳細(xì)介紹下,需要的朋友可以參考下
    2023-06-06

最新評論