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

詳解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ù)行為。編譯器不會(huì)發(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í),編譯器會(huì)生成錯(cuò)誤,而不會(huì)在不提示的情況下創(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ù)且不能繼承類,請(qǐng)使用 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ù)的信息,請(qǐng)參閱 override 說明符"。
下一個(gè)示例使用 final 關(guān)鍵字指定無法繼承類。

class BaseClass final 
{
};

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    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ā)的本機(jī)?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)鏈表和動(dòng)態(tài)鏈表

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

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

最新評(píng)論

柯坪县| 宽甸| 岳普湖县| 泰州市| 平武县| 托克托县| 横峰县| 桂林市| 贺兰县| 景德镇市| 渭南市| 大宁县| 孝义市| 岗巴县| 崇文区| 西昌市| 湖北省| 新巴尔虎右旗| 西丰县| 澎湖县| 积石山| 兴安县| 金寨县| 萨迦县| 禹城市| 东丰县| 蒲城县| 郑州市| 新巴尔虎右旗| 定安县| 商城县| 浑源县| 电白县| 慈溪市| 六盘水市| 竹溪县| 布拖县| 岫岩| 左云县| 威海市| 常德市|