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

C++中關(guān)鍵字 override 的簡析

 更新時間:2021年09月27日 14:39:27   作者:干燥劑  
這篇小文來聊聊 C++中的關(guān)鍵字 override,它的含義其實兩句話就說完了,但為了敘述的完整性,讓我們從虛函數(shù)說起。感興趣的小伙伴可以跟著小編一起學(xué)習(xí)下面文章內(nèi)容

在C++中,虛函數(shù)是最常見的實現(xiàn)多態(tài)的機(jī)制之一,來個最簡單的例子溫習(xí)一下:

class Base // 基類
{
public:
    virtual void f(){cout << "Base::f()" << endl;}
};
​
class Derived1 : public Base // 派生類1
{
    virtual void f(){cout << "Derived1::f()" << endl;}
};
​
class Derived2 : public Base // 派生類2
{
    virtual void f(){cout << "Derived2::f()" << endl;}
};

以上是一個基類 Base 及其派生子類的最簡示例,基類中有一個普通虛函數(shù) f( ),并且派生類們都復(fù)寫(即override)了該虛函數(shù)。

以上代碼的含義再清楚不過:我們希望通過基類指針或者基類引用,可以調(diào)用派生類版本的函數(shù) f( ),以此實現(xiàn)所謂的多態(tài),如下代碼所示:

Base *b;
    
b  = new Derived1;
b->f(); // 打印 "Derived1::f()"
    
b = new Derived2;
b->f(); // 打印 "Derived2::f()"

但,作為一名普通虛函數(shù) f( ),它實際上并不要求我們一定要復(fù)寫(即override)它,假如你在派生類中不復(fù)寫它,那么派生類將很自然地使用基類所提供的備用版本。

危險就在于此,人類是一個有諸多毛病的物種,其中一個根深蒂固的毛病是自以為是和粗心大意,因此以下代碼很有可能出自某個同胞之手:

class Derived3 : public Base // 派生類3
{
    // 注意:以下函數(shù)有參數(shù)
    // 人類以為復(fù)寫了基類虛函數(shù),但實際并沒有
    virtual void f(int){cout << "Derived3::f()" << endl;}
};

很明顯,這位同胞的本意與以上兩個派生類相同:派生出Derived3,并復(fù)寫虛函數(shù) f( )。很可惜,如果此時這位同胞貿(mào)然執(zhí)行如下代碼,將帶來災(zāi)難性的后果:

Base *b;
b = new Derived3;
b->f(); // 原想打印 "Derived2=3::f()"
        // 實際卻打印"Base::f()"!

如果這不夠災(zāi)難,可以將函數(shù) f( ) 想象成民航飛機(jī)的起飛引導(dǎo)程序。

現(xiàn)在問題很明顯了:

派生類的虛函數(shù)的復(fù)寫,很有可能出現(xiàn)烏龍——人類自以為復(fù)寫了基類的虛函數(shù)(比如 void f( )) ,但實際上卻寫了另一個函數(shù)(比如 void f(int)) ,要命的是C++語法并不制止這種愚蠢的行為,它會以為這是我們出于某種神秘的原因才這么干的。

然后,執(zhí)行程序,就這。。

解決辦法:

消除人類與編譯器之間深刻的誤會,即:我們在想復(fù)寫虛函數(shù)的時候,也同時將此想法明明白白地告訴編譯器,別讓它有什么誤會。怎么告訴它呢?蹬蹬噔噔憋了半天主角終于出場鳥:

class Derived3 : public Base // 派生類3
{
    // 注意:
    // 此處的 override 明明白白告訴編譯器:我要復(fù)寫虛函數(shù)
    // 但由于基類沒有 void f(int),因此此處將報錯!哦也!
    virtual void f(int) override 
    {cout << "Derived3::f()" << endl;}
};

到此這篇關(guān)于C++中關(guān)鍵字 override 的簡析的文章就介紹到這了,更多相關(guān)C++中關(guān)鍵字 override 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++11原子操作詳解

    C++11原子操作詳解

    這篇文章主要為大家介紹了C++的原子操作,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • Qt?關(guān)于容器的遍歷迭代器的使用問題小結(jié)

    Qt?關(guān)于容器的遍歷迭代器的使用問題小結(jié)

    Qt是一個跨平臺的 C++ 開發(fā)庫,主要用來開發(fā)圖形用戶界面程序,當(dāng)然也可以開發(fā)不帶界面的命令行程序,本文重點給大家介紹Qt?關(guān)于容器的遍歷迭代器的使用問題小結(jié),感興趣的朋友一起看看吧
    2022-03-03
  • Qt數(shù)據(jù)庫應(yīng)用之實現(xiàn)數(shù)據(jù)的導(dǎo)入與導(dǎo)出

    Qt數(shù)據(jù)庫應(yīng)用之實現(xiàn)數(shù)據(jù)的導(dǎo)入與導(dǎo)出

    QT中涉及到數(shù)據(jù)庫相關(guān)的項目,幾乎都需要將少量的信息數(shù)據(jù)導(dǎo)出到文件保存好,然后用戶可以打開該表格進(jìn)行編輯,編輯完成后保存,再重新導(dǎo)入到軟件中。所以本文將具體為大家介紹一下這一功能如何實現(xiàn),感興趣的可以跟隨小編一起試一試
    2022-01-01
  • OpenCV實現(xiàn)圖像角點檢測

    OpenCV實現(xiàn)圖像角點檢測

    這篇文章主要為大家詳細(xì)介紹了OpenCV實現(xiàn)圖像角點檢測,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Qt sender()函數(shù)的具體使用

    Qt sender()函數(shù)的具體使用

    在處理信號時,Qt提供了一個特殊的函數(shù)sender(),可以返回發(fā)送信號的對象指針,以實現(xiàn)更靈活的代碼邏輯,本文就來介紹一下Qt sender()函數(shù)的具體使用,感興趣的可以了解一下
    2024-01-01
  • C++實現(xiàn)LeetCode(146.近最少使用頁面置換緩存器)

    C++實現(xiàn)LeetCode(146.近最少使用頁面置換緩存器)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(146.近最少使用頁面置換緩存器),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 你不知道的C++中namespace和using的用法實例

    你不知道的C++中namespace和using的用法實例

    在C++語言編寫的程序中,變量和函數(shù)等的作用范圍是有一定限制的,下面這篇文章主要給大家介紹了一些你不知道的C++中namespace和using的用法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • C語言實現(xiàn)學(xué)生宿舍信息管理系統(tǒng)課程設(shè)計

    C語言實現(xiàn)學(xué)生宿舍信息管理系統(tǒng)課程設(shè)計

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)學(xué)生宿舍信息管理系統(tǒng)課程設(shè)計,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • VS編譯出現(xiàn)MSB3073命令的解決方案

    VS編譯出現(xiàn)MSB3073命令的解決方案

    =error MSB3073是Visual Studio編譯器報出的錯誤,本文主要介紹了VS編譯出現(xiàn)MSB3073命令的解決方案,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • C++面向?qū)ο笾惡蛯ο竽切┠悴恢赖募?xì)節(jié)原理詳解

    C++面向?qū)ο笾惡蛯ο竽切┠悴恢赖募?xì)節(jié)原理詳解

    C++是面向?qū)ο缶幊痰?這也是C++與C語言的最大區(qū)別,下面這篇文章主要給大家介紹了關(guān)于C++面向?qū)ο笾惡蛯ο蟮募?xì)節(jié)原理的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05

最新評論

长寿区| 南雄市| 临沧市| 华亭县| 新和县| 宜兴市| 罗城| 类乌齐县| 乌拉特中旗| 黑河市| 邹城市| 吉木萨尔县| 全州县| 射阳县| 保康县| 靖西县| 横峰县| 定远县| 阜宁县| 措美县| 高密市| 五台县| 怀远县| 高陵县| 荆门市| 广汉市| 施甸县| 永新县| 塘沽区| 肇庆市| 四子王旗| 定远县| 民丰县| 汤原县| 江油市| 长寿区| 乐安县| 兰坪| 平阳县| 汉川市| 望城县|