最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

override 說明符

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

function-declaration override;

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

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 時,編譯器會生成錯誤,而不會在不提示的情況下創(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ù)聲明或類名稱后使用時才是區(qū)分上下文的且具有特殊含義;否則,它不是保留的關(guān)鍵字。
在類聲明中使用 final 時,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 說明符"。
下一個示例使用 final 關(guān)鍵字指定無法繼承類。

class BaseClass final 
{
};

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

相關(guān)文章

  • 基于WTL中使用雙緩沖避免閃爍的解決方法

    基于WTL中使用雙緩沖避免閃爍的解決方法

    本篇文章是對WTL中使用雙緩沖避免閃爍的解決方法進行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 深入理解結(jié)構(gòu)體中占位符的用法

    深入理解結(jié)構(gòu)體中占位符的用法

    本篇文章是對結(jié)構(gòu)體中占位符的用法進行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++ Boost Uuid超詳細(xì)講解

    C++ Boost Uuid超詳細(xì)講解

    Boost是為C++語言標(biāo)準(zhǔn)庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫提供擴展的一些C++程序庫的總稱
    2022-12-12
  • C++封裝遠(yuǎn)程注入類CreateRemoteThreadEx實例

    C++封裝遠(yuǎn)程注入類CreateRemoteThreadEx實例

    這篇文章主要介紹了C++封裝遠(yuǎn)程注入類CreateRemoteThreadEx實例,詳細(xì)講述了注入DLL到指定的地址空間以及從指定的地址空間卸載DLL的方法,需要的朋友可以參考下
    2014-10-10
  • C語言實現(xiàn)簡單學(xué)生成績管理系統(tǒng)項目

    C語言實現(xiàn)簡單學(xué)生成績管理系統(tǒng)項目

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)簡單學(xué)生成績管理系統(tǒng)項目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • C/C++隨機數(shù)生成的五種方法

    C/C++隨機數(shù)生成的五種方法

    C++作為一種古老的編程語言,其隨機數(shù)生成的方法已經(jīng)經(jīng)歷了多次的變革,早期的C++版本使用的是rand()函數(shù)和RAND_MAX常量,這種方法雖然簡單,但并不總是提供高質(zhì)量的隨機數(shù),本文給大家介紹了C/C++隨機數(shù)生成的五種方法,需要的朋友可以參考下
    2025-03-03
  • C語言實現(xiàn)堆的簡單操作的示例代碼

    C語言實現(xiàn)堆的簡單操作的示例代碼

    堆(heap)是計算機科學(xué)中一類特殊的數(shù)據(jù)結(jié)構(gòu)的統(tǒng)稱。堆通常是一個可以被看做一棵樹的數(shù)組對象。本文介紹了C語言中堆的一些簡單操作,需要的可以參考一下
    2022-11-11
  • C語言實現(xiàn)掃雷小游戲詳解

    C語言實現(xiàn)掃雷小游戲詳解

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 使用?Visual?Studio?2022?開發(fā)?Linux?C++?應(yīng)用程序的過程詳解

    使用?Visual?Studio?2022?開發(fā)?Linux?C++?應(yīng)用程序的過程詳解

    Visual?Studio?2022?引入了用于?Linux?C++?開發(fā)的本機?WSL2?工具集,可以構(gòu)建和調(diào)試?Linux?C++?代碼,并提供了非常好的?Linux?文件系統(tǒng)性能、GUI?支持和完整的系統(tǒng)調(diào)用兼容性,這篇文章主要介紹了使用Visual?Studio?2022?開發(fā)?Linux?C++?應(yīng)用程序,需要的朋友可以參考下
    2021-11-11
  • C語言靜態(tài)鏈表和動態(tài)鏈表

    C語言靜態(tài)鏈表和動態(tài)鏈表

    靜態(tài)鏈表和動態(tài)鏈表是線性表鏈?zhǔn)酱鎯Y(jié)構(gòu)的兩種不同的表示方式。靜態(tài)鏈表的初始長度一般是固定的,在做插入和刪除操作時不需要移動元素,僅需修改指針。動態(tài)鏈表是相對于靜態(tài)鏈表而言的,一般地,在描述線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)時如果沒有特別說明即默認(rèn)描述的是動態(tài)鏈表。
    2016-05-05

最新評論

高密市| 株洲县| 镇巴县| 黄龙县| 元朗区| 东莞市| 廉江市| 麻栗坡县| 邵阳市| 营口市| 开原市| 开江县| 宁德市| 元阳县| 榆社县| 万全县| 子洲县| 灵寿县| 瑞丽市| 宕昌县| 铁岭市| 铜梁县| 隆尧县| 新蔡县| 乌苏市| 左云县| 定结县| 环江| 洞头县| 左云县| 彩票| 翁源县| 文登市| 塔河县| 临洮县| 霍州市| 宣汉县| 麟游县| 广西| 新安县| 伊宁县|