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

C++ 多態(tài)性虛函數(shù)和動(dòng)態(tài)綁定學(xué)習(xí)筆記

 更新時(shí)間:2023年10月26日 09:33:51   作者:Totn  
這篇文章主要為大家介紹了C++ 多態(tài)性虛函數(shù)和動(dòng)態(tài)綁定學(xué)習(xí)筆記,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

C++ 多態(tài)性

C++中的多態(tài)性通過(guò)虛函數(shù)和動(dòng)態(tài)綁定來(lái)實(shí)現(xiàn), 下面簡(jiǎn)單介紹一下多態(tài)的實(shí)現(xiàn):

  • 虛函數(shù):在基類中聲明虛函數(shù),通過(guò)在成員函數(shù)前面加上virtual關(guān)鍵字來(lái)標(biāo)識(shí)。虛函數(shù)允許子類對(duì)其進(jìn)行重寫(覆蓋),從而實(shí)現(xiàn)多態(tài)?;愔械奶摵瘮?shù)只有函數(shù)聲明,沒(méi)有具體的實(shí)現(xiàn)。
  • 動(dòng)態(tài)綁定:基于對(duì)象的類型來(lái)選擇調(diào)用的函數(shù),而不是基于指針或引用的類型。在編譯時(shí),編譯器會(huì)根據(jù)指針或引用的靜態(tài)類型進(jìn)行函數(shù)調(diào)用;而在運(yùn)行時(shí),根據(jù)指針或引用所指向的對(duì)象的實(shí)際類型來(lái)決定調(diào)用哪個(gè)函數(shù)。這種在運(yùn)行時(shí)確定調(diào)用的函數(shù)稱為動(dòng)態(tài)綁定。
  • 虛函數(shù)表(vtable):編譯器會(huì)為每一個(gè)包含虛函數(shù)的類生成一個(gè)虛函數(shù)表,該表存儲(chǔ)了虛函數(shù)的地址。對(duì)象的內(nèi)存布局中會(huì)包含一個(gè)指向虛函數(shù)表的指針,稱為虛函數(shù)指針(vptr)。虛函數(shù)指針指向當(dāng)前對(duì)象的虛函數(shù)表,通過(guò)虛函數(shù)表來(lái)找到具體的虛函數(shù)地址。
  • 多態(tài)調(diào)用過(guò)程:當(dāng)通過(guò)指針或引用調(diào)用虛函數(shù)時(shí),首先會(huì)根據(jù)指針或引用的靜態(tài)類型找到對(duì)應(yīng)的虛函數(shù)表,然后根據(jù)虛函數(shù)表中的偏移量找到具體的虛函數(shù)地址,最終調(diào)用對(duì)應(yīng)的函數(shù)。

示例代碼

class Animal {
public:
    virtual void sound() {
        std::cout << "動(dòng)物能叫" << std::endl;
    }
};
class Dog : public Animal {
public:
    void sound() override {
        std::cout << "Dog's voice sounds like Wangwang." << std::endl;
    }
};
class Cat : public Animal {
public:
    void sound() override {
        std::cout << "Cat's voice sounds like Miaomiao." << std::endl;
    }
};
int main() {
    Animal* animalPtr;
    Dog dog;
    Cat cat;
    animalPtr = &dog;
    animalPtr->sound();  // 輸出: Dog's voice sounds like Wangwang.
    animalPtr = &cat;
    animalPtr->sound();  // 輸出: Cat's voice sounds like Miaomiao.
    return 0;
}

在上述示例中,Animal類是基類,DogCat類分別是派生類。它們都重寫(覆蓋)了基類的sound函數(shù)。通過(guò)基類指針animalPtr指向不同的派生類對(duì)象,并調(diào)用sound函數(shù)。在運(yùn)行時(shí),根據(jù)指針?biāo)赶虻膶?duì)象的實(shí)際類型來(lái)選擇調(diào)用哪個(gè)函數(shù),實(shí)現(xiàn)了多態(tài)性。

總之,C++中的多態(tài)通過(guò)虛函數(shù)和動(dòng)態(tài)綁定來(lái)實(shí)現(xiàn)。虛函數(shù)允許子類對(duì)其進(jìn)行重寫,動(dòng)態(tài)綁定根據(jù)對(duì)象的實(shí)際類型來(lái)確定調(diào)用哪個(gè)函數(shù)。使用虛函數(shù)表和虛函數(shù)指針來(lái)實(shí)現(xiàn)動(dòng)態(tài)綁定。這種機(jī)制能夠提供更靈活的代碼設(shè)計(jì)和對(duì)象行為的多樣性。

以上就是C++ 多態(tài)性虛函數(shù)和動(dòng)態(tài)綁定學(xué)習(xí)筆記的詳細(xì)內(nèi)容,更多關(guān)于C++ 多態(tài)虛函數(shù)動(dòng)態(tài)綁定的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Qt MQTT開(kāi)發(fā)環(huán)境搭建的實(shí)現(xiàn)示例

    Qt MQTT開(kāi)發(fā)環(huán)境搭建的實(shí)現(xiàn)示例

    本文主要介紹了Qt MQTT開(kāi)發(fā)環(huán)境搭建的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 如何用c語(yǔ)言完成俄羅斯方塊小游戲

    如何用c語(yǔ)言完成俄羅斯方塊小游戲

    這篇文章主要介紹了如何使用C語(yǔ)言開(kāi)發(fā)一個(gè)簡(jiǎn)單的俄羅斯方塊游戲,涵蓋了游戲設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)、核心邏輯和實(shí)現(xiàn)步驟,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • 圖解AVL樹(shù)數(shù)據(jù)結(jié)構(gòu)輸入與輸出及實(shí)現(xiàn)示例

    圖解AVL樹(shù)數(shù)據(jù)結(jié)構(gòu)輸入與輸出及實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了C++圖解AVL樹(shù)數(shù)據(jù)結(jié)構(gòu)輸入與輸出操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • C語(yǔ)言入門篇--定義宏#define的概述

    C語(yǔ)言入門篇--定義宏#define的概述

    本篇文章是C語(yǔ)言系列基礎(chǔ)篇,適合c語(yǔ)言剛?cè)腴T的朋友,本文對(duì)關(guān)于c語(yǔ)言的定義宏#define作了簡(jiǎn)要的概述,希望可以幫助大家快速入門c語(yǔ)言的世界,更好的理解c語(yǔ)言
    2021-08-08
  • 手拉手教你如何理解c/c++中的指針

    手拉手教你如何理解c/c++中的指針

    當(dāng)你對(duì)C越來(lái)越熟悉時(shí),你會(huì)發(fā)現(xiàn)把與指針攪和在一起的"類型"這個(gè)概念分成"指針的類型"和"指針?biāo)赶虻念愋?quot;兩個(gè)概念,是精通指針的關(guān)鍵點(diǎn)之一,這篇文章主要給大家介紹了關(guān)于c/c++中指針的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • C++ LeetCode1796字符串中第二大數(shù)字

    C++ LeetCode1796字符串中第二大數(shù)字

    這篇文章主要為大家介紹了C++ LeetCode1796字符串中第二大數(shù)字示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的文本編輯器

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的文本編輯器

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的文本編輯器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C語(yǔ)言簡(jiǎn)明講解三目運(yùn)算符和逗號(hào)表達(dá)式的使用

    C語(yǔ)言簡(jiǎn)明講解三目運(yùn)算符和逗號(hào)表達(dá)式的使用

    三目運(yùn)算符,又稱條件運(yùn)算符,它是唯一有3個(gè)操作數(shù)的運(yùn)算符,有時(shí)又稱為三元運(yùn)算符。三目運(yùn)算符的結(jié)合性是右結(jié)合的;逗號(hào)表達(dá)式,是c語(yǔ)言中的逗號(hào)運(yùn)算符,優(yōu)先級(jí)別最低,它將兩個(gè)及其以上的式子聯(lián)接起來(lái),從左往右逐個(gè)計(jì)算表達(dá)式,整個(gè)表達(dá)式的值為最后一個(gè)表達(dá)式的值
    2022-04-04
  • C語(yǔ)言container of()函數(shù)案例詳解

    C語(yǔ)言container of()函數(shù)案例詳解

    這篇文章主要介紹了C語(yǔ)言container of()函數(shù)案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C語(yǔ)言實(shí)現(xiàn)個(gè)人財(cái)務(wù)管理軟件

    C語(yǔ)言實(shí)現(xiàn)個(gè)人財(cái)務(wù)管理軟件

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)個(gè)人財(cái)務(wù)管理軟件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評(píng)論