C++派生類的多態(tài)如何實(shí)現(xiàn)

c++
小樊
85
2024-08-06 06:17:11
欄目: 編程語言

C++中派生類的多態(tài)是通過虛函數(shù)和虛函數(shù)表實(shí)現(xiàn)的。在基類中聲明一個(gè)虛函數(shù),然后在派生類中重寫這個(gè)虛函數(shù),就可以實(shí)現(xiàn)多態(tài)。

具體來說,當(dāng)一個(gè)指向基類的指針或引用調(diào)用一個(gè)虛函數(shù)時(shí),實(shí)際上會(huì)調(diào)用指向派生類對(duì)象的虛函數(shù)。這是因?yàn)槊總€(gè)對(duì)象都有一個(gè)虛函數(shù)表,存儲(chǔ)了該對(duì)象的虛函數(shù)地址,通過這個(gè)虛函數(shù)表可以實(shí)現(xiàn)動(dòng)態(tài)綁定,實(shí)現(xiàn)多態(tài)性。

以下是一個(gè)簡單的示例:

#include <iostream>

class Base {
public:
    virtual void print() {
        std::cout << "Base::print() called" << std::endl;
    }
};

class Derived : public Base {
public:
    void print() override {
        std::cout << "Derived::print() called" << std::endl;
    }
};

int main() {
    Base* basePtr = new Derived();
    basePtr->print(); // 輸出 Derived::print() called

    delete basePtr;
    return 0;
}

在上面的示例中,基類Base中聲明了一個(gè)虛函數(shù)print(),派生類Derived重寫了這個(gè)虛函數(shù)。在main()函數(shù)中,我們用一個(gè)指向基類對(duì)象的指針basePtr指向一個(gè)派生類對(duì)象,并調(diào)用print()函數(shù),最終輸出的是Derived::print() called,實(shí)現(xiàn)了多態(tài)。

0