C++多態(tài)性如何處理繼承關(guān)系

c++
小樊
81
2024-11-09 02:23:28

C++的多態(tài)性允許我們通過(guò)基類(lèi)指針或引用來(lái)調(diào)用派生類(lèi)的成員函數(shù)。處理繼承關(guān)系時(shí),多態(tài)性主要通過(guò)虛函數(shù)(virtual function)實(shí)現(xiàn)。以下是如何使用虛函數(shù)處理繼承關(guān)系的簡(jiǎn)要說(shuō)明:

  1. 在基類(lèi)中聲明虛函數(shù):在基類(lèi)中,我們可以使用關(guān)鍵字virtual聲明一個(gè)成員函數(shù)為虛函數(shù)。這樣,派生類(lèi)中的同名函數(shù)將自動(dòng)成為虛函數(shù)。
class Base {
public:
    virtual void show() {
        cout << "Base class show()" << endl;
    }
};
  1. 在派生類(lèi)中重寫(xiě)虛函數(shù):在派生類(lèi)中,我們可以使用相同的函數(shù)名、返回類(lèi)型和參數(shù)列表重寫(xiě)基類(lèi)中的虛函數(shù)。這樣,當(dāng)我們通過(guò)基類(lèi)指針或引用調(diào)用該函數(shù)時(shí),將執(zhí)行派生類(lèi)中的實(shí)現(xiàn)。
class Derived : public Base {
public:
    void show() override {
        cout << "Derived class show()" << endl;
    }
};
  1. 使用基類(lèi)指針或引用調(diào)用虛函數(shù):通過(guò)基類(lèi)指針或引用調(diào)用虛函數(shù)時(shí),實(shí)際調(diào)用的函數(shù)取決于對(duì)象的實(shí)際類(lèi)型。這就是多態(tài)性的體現(xiàn)。
int main() {
    Base *b = new Derived();
    b->show(); // 輸出 "Derived class show()"
    delete b;
    return 0;
}

在這個(gè)例子中,我們創(chuàng)建了一個(gè)指向Derived對(duì)象的Base指針。當(dāng)我們通過(guò)該指針調(diào)用show()函數(shù)時(shí),實(shí)際執(zhí)行的是Derived類(lèi)中的實(shí)現(xiàn),而不是Base類(lèi)中的實(shí)現(xiàn)。這就是多態(tài)性在C++中處理繼承關(guān)系的方式。

0