0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

虛函數(shù),C++開(kāi)發(fā)者如何有效利用

Linux愛(ài)好者 ? 來(lái)源:Linux愛(ài)好者 ? 2023-02-11 09:39 ? 次閱讀

什么是虛函數(shù)?

虛函數(shù)是基類中聲明的成員函數(shù),且使用者期望在派生類中將其重新定義。那么,在C++ 中,什么是虛函數(shù)呢?C++ 中,通常將虛函數(shù)用于實(shí)現(xiàn)運(yùn)行時(shí)多態(tài),該特性由 C++ 提供,適用于面向?qū)ο?a target="_blank">編程。我們將在下文更為詳細(xì)地討論運(yùn)行時(shí)多態(tài)。不論函數(shù)調(diào)用所使用的指針或引用類型如何,虛函數(shù)最為重要的工作是確保函數(shù)調(diào)用正確。

1虛函數(shù)的使用規(guī)則

C++虛函數(shù)必須遵循幾個(gè)關(guān)鍵規(guī)則:

  • 在基類中使用virtual關(guān)鍵詞來(lái)聲明函數(shù)

  • 虛函數(shù)不能為靜態(tài)函數(shù)

  • 為實(shí)現(xiàn)運(yùn)行時(shí)多態(tài),應(yīng)使用指針或引用來(lái)訪問(wèn)虛擬函數(shù)

  • 對(duì)于基類和派生類而言,此類函數(shù)的原型應(yīng)該相同(允許使用協(xié)變式返回類型,我們將在下文進(jìn)行討論)

  • 如果基類中含有虛函數(shù),則應(yīng)該使用虛擬析構(gòu)函數(shù),防止析構(gòu)函數(shù)調(diào)用錯(cuò)誤

2 用 C++ 運(yùn)行虛函數(shù)的示例

虛函數(shù)在C++ 中的運(yùn)行情況:

class Pet {
public:
    virtual ~Pet() {}
    virtual void make_sound() const = 0;
};


class Dog: public Pet {
public:
    virtual void make_sound() const override {
        std::cout << "raf raf
";
    }
};


class Cat: public Pet {
public:
    virtual void make_sound() const override {
        std::cout << "mewo
";
    }
};


int main() {
    Cat mitzi;
    Dog roxy;
    Pet *pets[] = {&mitzi, &roxy};
    for(auto pPet: pets) {
        pPet->make_sound();
    }
}
解釋一下上述示例。Pet 這是一個(gè)通用基類。但是我們?nèi)匀幌M嬖谝粋€(gè) make_sound 函數(shù),這樣,我們就能在不知道 pet 類型的情況下,在 pet 上調(diào)用 make_sound。僅在進(jìn)行編譯時(shí),我們才能知道 pet 類型。因此,我們?cè)诨愔新暶魈摵瘮?shù) make_sound,用 =0 來(lái)將其表示為由派生類實(shí)現(xiàn)的純虛函數(shù)。然后,再由 Dog 和 Cat 來(lái)真正實(shí)現(xiàn)該函數(shù)。實(shí)現(xiàn)函數(shù)期間,我們添加關(guān)鍵詞 override,這樣,編譯器就能確保函數(shù)簽名與基類中的簽名相匹配。在 main 中,我們可以在 Pet 指針上調(diào)用 make_sound,而無(wú)需在編譯時(shí)知道該指針指向哪種 pet。我們會(huì)在運(yùn)行時(shí),根據(jù)實(shí)際存在的對(duì)象,實(shí)現(xiàn)所需函數(shù)。我們必須要強(qiáng)調(diào),這是一個(gè)非常簡(jiǎn)單的示例。我們也有其他解決方案應(yīng)對(duì)這一簡(jiǎn)單示例(例如,為 pet’s sound 持有數(shù)據(jù)成員,并避免使用虛函數(shù))。但我們想要展示虛函數(shù)的實(shí)現(xiàn)過(guò)程,因此不對(duì)其他解決方案進(jìn)行額外展示。通常情況下,會(huì)使用虛函數(shù)為派生類中的不同行為建模,而相應(yīng)行為不能用簡(jiǎn)單數(shù)據(jù)成員來(lái)建模。 3 協(xié)變式返回類型我們提到過(guò),若要實(shí)現(xiàn)虛函數(shù),派生類函數(shù)的簽名必須與基類中的簽名相匹配。唯一允許的區(qū)別是在返回類型上,只要派生類的返回類型是基類返回的派生類型即可。讓我們看看下面的示例:
class PetFactory {
public:
    virtual ~PetFactory() {}
    virtual Pet* create() const = 0;
} 


class DogFactory: public PetFactory {
public:
    virtual Dog* create() const override {
        return new Dog();
    }
}; 


class CatFactory: public PetFactory {
public:
    virtual Cat* create() const override {
        return new Cat();
    }
};


int main() {
    std::vector pets;
    DogFactory df;
    CatFactory cf;
    PetFactory* petFactory[] = {&df, &cf};
    for(auto factory: petFactory) {
        pets.push_back(factory->create());
    }
    for(auto pPet: pets) {
        pPet->make_sound();
    }
    for(auto pPet: pets) {
        delete pPet;
    }
}
在上述示例中,PetFactory 創(chuàng)建函數(shù)僅能知道它可以返回 Pet*,但使用協(xié)變式返回類型,DogFactory 和 CatFactory 則能知道更為具體的內(nèi)容,這種虛函數(shù)的實(shí)現(xiàn)方式仍然行之有效。

現(xiàn)在,如果您已經(jīng)花費(fèi)時(shí)間研究過(guò) C++,可能會(huì)注意到,不需要由虛函數(shù)來(lái)重新定義派生類中的基函數(shù)。但存在這樣的巨大區(qū)別,使得虛函數(shù)不可或缺:虛函數(shù)覆寫(xiě)基類函數(shù),從而實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)。從本質(zhì)上講,多態(tài)指一個(gè)函數(shù)或?qū)ο笠圆煌绞綀?zhí)行的能力,具體情況視使用方式而定。這屬于面向?qū)ο缶幊痰?/span>關(guān)鍵特性——結(jié)合其他眾多特性,使得 C++ 作為編程語(yǔ)言而有別于 C 語(yǔ)言。

1 代碼更為靈活、更為通用這是貫穿所有多態(tài)程序的主要優(yōu)點(diǎn):根據(jù)運(yùn)行時(shí)已知的調(diào)用對(duì)象,通過(guò)允許以不同方式執(zhí)行函數(shù)調(diào)用,能使程序更為靈活而通用。如此一來(lái),運(yùn)行時(shí)多態(tài)便能從真正意義上使您的代碼反映現(xiàn)實(shí)——特別是各場(chǎng)景中的對(duì)象(或人、動(dòng)物、形狀)并不總是以相同方式執(zhí)行。 2 代碼可復(fù)用通過(guò)使用虛函數(shù),我們可以將只應(yīng)實(shí)現(xiàn)一次的通用操作和不同子類中可能有所不同的具體細(xì)節(jié)區(qū)分開(kāi)來(lái)。試想以下示例:如果我們希望實(shí)現(xiàn) prism 類層次結(jié)構(gòu),則需要在各派生類中分別計(jì)算基面積,但可以使用派生類實(shí)現(xiàn)基面積計(jì)算,從而在基類中實(shí)現(xiàn)體積函數(shù)。實(shí)現(xiàn)代碼如下:
class Prism {
    double height;
public:
    virtual ~Prism() {}
    virtual double baseArea() const = 0;
    double volume() const {
        return height * baseArea();
    }
    // ...
};


class Cylinder: public Prism {
    double radius;
public:
    double baseArea() const override {
         return radius * radius * std::pi
    }
    // ...
};
3 契約式設(shè)計(jì)術(shù)語(yǔ)“契約式設(shè)計(jì)”指如果代碼設(shè)置有執(zhí)行設(shè)計(jì)的契約,會(huì)比只通過(guò)文檔來(lái)執(zhí)行設(shè)計(jì)要好得多。虛函數(shù),特別是純虛函數(shù),因其決定了在派生類中以不同方式重新實(shí)現(xiàn)特定操作的設(shè)計(jì)決策,可將其視為契約式設(shè)計(jì)工具。 虛函數(shù)的局限性

虛函數(shù)功能極為強(qiáng)大,但它們并非毫無(wú)缺點(diǎn)。開(kāi)始使用虛函數(shù)前,您應(yīng)該注意以下事項(xiàng):

1 性能

無(wú)論是在運(yùn)行時(shí)性能還是在內(nèi)存方面,虛函數(shù)成本都要比普通函數(shù)高。

內(nèi)存部分通常冗余,取決于實(shí)現(xiàn)方式,但最為常見(jiàn)的是每個(gè)對(duì)象都有一個(gè)額外內(nèi)部指針。這并不是什么大問(wèn)題,除非我們有數(shù)以百萬(wàn)計(jì)的小對(duì)象,這些小對(duì)象的額外指針可能會(huì)引起內(nèi)存問(wèn)題。

函數(shù)的運(yùn)行時(shí)性能成本不是一次跳轉(zhuǎn)而是兩次跳轉(zhuǎn),或者如果可以內(nèi)聯(lián)函數(shù),性能成本就是兩次跳轉(zhuǎn)而不是零次跳轉(zhuǎn)。虛函數(shù)需要跳轉(zhuǎn)到虛函數(shù)表,再跳轉(zhuǎn)到函數(shù)本身。這種額外跳轉(zhuǎn)增加了 CPU 指令緩存中指令未準(zhǔn)備就緒的概率,因此,這兩次跳轉(zhuǎn)并非唯一成本。

最后,如果您需要實(shí)現(xiàn)多態(tài),與其他替代方案相比,性能方面的額外成本通常也在情理之中。然而,若要將第一個(gè)虛函數(shù)添加到類中,通常需要考慮額外成本。

2設(shè)計(jì)問(wèn)題

繼承,特別是虛函數(shù),會(huì)引起設(shè)計(jì)問(wèn)題。繼承層次結(jié)構(gòu)設(shè)計(jì)糟糕可能會(huì)導(dǎo)致類膨脹和類之間關(guān)系異常。

從構(gòu)造函數(shù)和析構(gòu)函數(shù)調(diào)用虛函數(shù)的規(guī)則也會(huì)影響您的設(shè)計(jì)。從構(gòu)造函數(shù)和析構(gòu)函數(shù)調(diào)用的任何虛函數(shù)都不是多態(tài)函數(shù),這樣一來(lái),有時(shí)需要將操作從構(gòu)造函數(shù)轉(zhuǎn)移到 init 虛擬函數(shù)。

為避免糟糕設(shè)計(jì),應(yīng)切記繼承和多態(tài)并非是應(yīng)對(duì)任何問(wèn)題的最佳解決方案。請(qǐng)觀看 Sean Parent 的演講”Inheritance is the Base Class of Evil“,深入了解相關(guān)內(nèi)容。

3 調(diào)試,容易出錯(cuò)

諷刺的是,虛函數(shù)面臨的挑戰(zhàn)之一是缺乏彈性。

由于需要遵循調(diào)用流程,調(diào)試虛函數(shù)調(diào)用可能會(huì)變得稍顯混亂。一般來(lái)說(shuō),遵循函數(shù)調(diào)用并不十分困難,但根據(jù)對(duì)象類型,在遵循隱藏調(diào)度方面,仍然需要進(jìn)行額外工作。調(diào)試器會(huì)自行糾正錯(cuò)誤,但決定斷點(diǎn)位置可能會(huì)變得更加困難。

至于更容易出錯(cuò),在某些情況下,不應(yīng)調(diào)用虛函數(shù)的基類實(shí)現(xiàn);而在某些情況下,應(yīng)在開(kāi)始時(shí)調(diào)用,有時(shí)也在結(jié)束時(shí)調(diào)用。由于忘記調(diào)用基類實(shí)現(xiàn),或是在錯(cuò)誤的地方、不需要的時(shí)候調(diào)用,使用虛函數(shù)極其容易出錯(cuò)。

可將其視為契約式設(shè)計(jì)工具。 虛函數(shù)的替代方案1 僅使用數(shù)據(jù)成員第一種替代方案是嘗試并對(duì)基于簡(jiǎn)單數(shù)據(jù)成員的不同行為進(jìn)行建模。如果不同類型的唯一區(qū)別是 sound,那就將其轉(zhuǎn)換為數(shù)據(jù)成員,在構(gòu)造時(shí)進(jìn)行初始化,這樣就沒(méi)有問(wèn)題了。但在許多情況下,行為更加復(fù)雜,需要不同的實(shí)現(xiàn)方式。 2 變體另一種方案是使用 std::variant 和 std::visit,特別是待支持的不同類型已知,且列表不會(huì)太長(zhǎng)時(shí),二者可能相關(guān)。您可以點(diǎn)擊此處和此處閱讀更多關(guān)于該方案的信息。 3 函數(shù)式編程您可以傳遞待執(zhí)行的操作,將其作為函數(shù)對(duì)象的 lambda,或者作為舊有 C 樣式的函數(shù)指針,隨后對(duì)其進(jìn)行建模,而無(wú)需在類層次結(jié)構(gòu)中對(duì)不同操作進(jìn)行建模。通過(guò)該方法,您能將數(shù)據(jù)模型和可能想要執(zhí)行的操作區(qū)分開(kāi)來(lái),這帶來(lái)了極高靈活性。 4 靜態(tài)多態(tài)靜態(tài)多態(tài)是一種基于模板的方法,用于獲取多態(tài)動(dòng)態(tài),但基于編譯時(shí)已知的實(shí)際想要使用的類型。例如,您可能希望代碼同時(shí)支持 UDPConnection 和 TCPConnection,但在編譯時(shí),您可能想要知道使用 UDPConnection 或 TCPConnection 的具體流程。基于模板的靜態(tài)多態(tài)可以實(shí)現(xiàn)更佳性能。一些替代技術(shù)可能會(huì)導(dǎo)致項(xiàng)目編譯時(shí)間變長(zhǎng)。我們認(rèn)為,特別是當(dāng)您使用 Incredibuild 來(lái)加速構(gòu)建時(shí),這不會(huì)影響您的決策設(shè)計(jì)。首先選擇合適的設(shè)計(jì)方案,然后使用正確工具來(lái)縮減編譯時(shí)間即可。 用 Incredibuild 加速您的 C++ 虛函數(shù)如果您想在不嚴(yán)重拖累編譯速度和構(gòu)建進(jìn)程的情況下,從虛擬函數(shù)中受益,您就需要強(qiáng)大的計(jì)算能力作為后援。Incredibuild 能夠做到這一點(diǎn)。通過(guò)在虛擬機(jī)在本地網(wǎng)絡(luò)上分配編譯任務(wù),Incredibuild 從根本上加快了 C++ 的編譯速度。此外,Incredibuild 能與時(shí)下主流編譯器和構(gòu)建系統(tǒng)無(wú)縫集成,包括 Visual Studio、Qt Creator 和 Clang。如此一來(lái),虛函數(shù)便能具備極高的靈活性和效率,而無(wú)需花費(fèi)時(shí)間來(lái)等待代碼編譯。。首先選擇合適的設(shè)計(jì)方案,然后使用正確工具來(lái)縮減編譯時(shí)間即可。 總 結(jié) 1. 什么是 C++ 的虛函數(shù)?虛擬函數(shù)是基類中聲明的成員函數(shù),將在派生類中重新定義。在 C++ 中,使用虛函數(shù)來(lái)實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)。2. 虛函數(shù)存在哪些問(wèn)題?在運(yùn)行時(shí)性能和內(nèi)存使用方面,相比于普通函數(shù),虛擬函數(shù)會(huì)造成更多影響。此外,虛擬函數(shù)會(huì)產(chǎn)生基于繼承層次結(jié)構(gòu)的設(shè)計(jì)問(wèn)題,導(dǎo)致類膨脹和關(guān)系異常。最后,虛擬函數(shù)由于存在函數(shù)調(diào)用問(wèn)題,往往難以進(jìn)行調(diào)試。由于調(diào)用順序的不可預(yù)測(cè)性,使用虛擬函數(shù)更容易引發(fā)錯(cuò)誤。3. 在 C++ 中,虛函數(shù)有何替代方案?是的,為了實(shí)現(xiàn)更好的設(shè)計(jì)或者是獲得更佳的性能,您可能要考慮一些替代方案。但鑒于 C++ 程序員普遍使用虛函數(shù),您應(yīng)將其視為工具包內(nèi)的一項(xiàng)工具,必要時(shí)加以使用。如果您選擇了另一種替代方案,比如基于模板的靜態(tài)多態(tài),切勿讓較長(zhǎng)的編譯時(shí)間影響您的設(shè)計(jì)方案。確保選用合適的工具來(lái)加速構(gòu)建進(jìn)程,如果您沒(méi)有使用 Incredibuild,請(qǐng)了解我們的解決方案,看看 Incredibuild 在減少編譯時(shí)間方面可實(shí)現(xiàn)的驚人效果。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2117

    瀏覽量

    74777
  • 虛函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    1758

原文標(biāo)題:虛函數(shù),C++開(kāi)發(fā)者如何有效利用?

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    C++函數(shù)virtual詳解

    C++ 中的函數(shù)用于解決動(dòng)態(tài)多態(tài)問(wèn)題,函數(shù)的作用是允許在派生類中重新定義與積累同名的函數(shù),并
    發(fā)表于 09-07 11:27 ?3070次閱讀

    C++函數(shù)操作指南(含代碼示例)

    本期博客,我們來(lái)介紹C++中的函數(shù),并給出一些實(shí)際操作的建議。
    發(fā)表于 02-12 10:12 ?1003次閱讀

    AKI跨語(yǔ)言調(diào)用庫(kù)神助攻C/C++代碼遷移至HarmonyOS NEXT

    /C++代碼快速遷移至HarmonyOS NEXT。憑借卓越的兼容性,AKI已成為廠商與開(kāi)發(fā)者打造鴻蒙原生應(yīng)用過(guò)程中廣泛使用的跨語(yǔ)言調(diào)用解決方案。 AKI是一款專為鴻蒙原生開(kāi)發(fā)設(shè)計(jì)的FFI(外部
    發(fā)表于 01-02 17:08

    C++標(biāo)準(zhǔn)編程:函數(shù)與內(nèi)聯(lián)

      曾經(jīng)在討論C++的時(shí)候,經(jīng)常會(huì)問(wèn)到:“函數(shù)能被聲明為內(nèi)聯(lián)嗎?”現(xiàn)在,我們幾乎聽(tīng)不到這個(gè)問(wèn)題了?,F(xiàn)在聽(tīng)到的是:“你不應(yīng)該使print成為內(nèi)聯(lián)的。聲明一個(gè)
    發(fā)表于 05-03 11:53

    STM32 C++代碼封裝初探相關(guān)資料推薦

    、抽象化。C++是一種天然支持面向?qū)ο缶幊痰恼Z(yǔ)言,在C語(yǔ)言的基礎(chǔ)上,C++不僅提供了class關(guān)鍵字和類與對(duì)象的概念,使開(kāi)發(fā)者可以清晰方便的實(shí)現(xiàn)面向?qū)ο缶幊獭?/div>
    發(fā)表于 02-11 06:05

    什么是C++函數(shù)? 應(yīng)該怎么定義? 用途是什么?

    什么是C++函數(shù)? 應(yīng)該怎么定義? 主要用途是什么?
    發(fā)表于 11-08 06:58

    C++如何處理內(nèi)聯(lián)函數(shù)

    當(dāng)一個(gè)函數(shù)是內(nèi)聯(lián)和函數(shù)時(shí),會(huì)發(fā)生代碼替換或使用表調(diào)用嗎? 為了弄 清楚內(nèi)聯(lián)和函數(shù),讓我們將
    發(fā)表于 11-29 11:59 ?28次下載

    C++程序設(shè)計(jì)教程之多態(tài)性與函數(shù)的詳細(xì)資料說(shuō)明

    本文檔詳細(xì)介紹的是C++程序設(shè)計(jì)教程之多態(tài)性與函數(shù)的詳細(xì)資料說(shuō)明主要資料包括了:1 多態(tài)性的概念,2 一個(gè)典型的例子,3 函數(shù),4 純
    發(fā)表于 03-14 16:39 ?5次下載
    <b class='flag-5'>C++</b>程序設(shè)計(jì)教程之多態(tài)性與<b class='flag-5'>虛</b><b class='flag-5'>函數(shù)</b>的詳細(xì)資料說(shuō)明

    如何在中斷C函數(shù)中調(diào)用C++

    之前,我們?cè)趩纹瑱C(jī)程序開(kāi)發(fā)時(shí)都會(huì)面對(duì)中斷函數(shù)。眾所周知的,這個(gè)中斷函數(shù)肯定是要用C函數(shù)來(lái)定義的。我在用C
    發(fā)表于 05-09 18:17 ?0次下載
    如何在中斷<b class='flag-5'>C</b><b class='flag-5'>函數(shù)</b>中調(diào)用<b class='flag-5'>C++</b>

    圖文詳解:C++表的剖析

    圖文詳解:C++表的剖析
    的頭像 發(fā)表于 06-29 14:23 ?2740次閱讀
    圖文詳解:<b class='flag-5'>C++</b><b class='flag-5'>虛</b>表的剖析

    C++中如何用函數(shù)實(shí)現(xiàn)多態(tài)

    01 — C++函數(shù)探索 C++是一門(mén)面向?qū)ο笳Z(yǔ)言,在C++里運(yùn)行時(shí)多態(tài)是由
    的頭像 發(fā)表于 09-29 14:18 ?1877次閱讀

    一文詳解函數(shù)及其相關(guān)知識(shí)點(diǎn)

    本期是C++基礎(chǔ)語(yǔ)法分享的第七節(jié),今天給大家來(lái)分享一下: (1)析構(gòu)函數(shù); (2)純函數(shù); (3)
    的頭像 發(fā)表于 10-13 10:14 ?8185次閱讀

    華為開(kāi)發(fā)者大會(huì)2021HDCS——為什么要用C++開(kāi)發(fā)HarmonyOS應(yīng)用

    體驗(yàn)的未來(lái)。 為什么要用C++開(kāi)發(fā)HarmonyOS應(yīng)用 進(jìn)步提升設(shè)備性能,以降低延遲 ? 運(yùn)行游戲或物理模擬等計(jì)算密集型應(yīng)用 ? 重復(fù)使用您自己或其他開(kāi)發(fā)者C
    的頭像 發(fā)表于 10-23 16:13 ?2322次閱讀
    華為<b class='flag-5'>開(kāi)發(fā)者</b>大會(huì)2021HDCS——為什么要用<b class='flag-5'>C++</b><b class='flag-5'>開(kāi)發(fā)</b>HarmonyOS應(yīng)用

    openEuler Summit開(kāi)發(fā)者峰會(huì):iSula+StratoVirt輕量機(jī)容器解決方案展示

    openEuler Summit開(kāi)發(fā)者峰會(huì):iSula+StratoVirt輕量機(jī)容器解決方案展示
    的頭像 發(fā)表于 11-10 10:46 ?1650次閱讀
    openEuler Summit<b class='flag-5'>開(kāi)發(fā)者</b>峰會(huì):iSula+StratoVirt輕量<b class='flag-5'>虛</b>機(jī)容器解決方案展示

    深度解析C++中的函數(shù)

    函數(shù)作為C++的重要特性,讓人又愛(ài)又怕,愛(ài)它功能強(qiáng)大,但又怕駕馭不好,讓它反咬一口,今天我們用CPU的角度,撕掉語(yǔ)法的偽裝,重新認(rèn)識(shí)一下函數(shù)
    的頭像 發(fā)表于 02-15 11:14 ?1062次閱讀
    深度解析<b class='flag-5'>C++</b>中的<b class='flag-5'>虛</b><b class='flag-5'>函數(shù)</b>

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品