溫馨提示×

c++ base類的虛函數(shù)如何使用

c++
小樊
84
2024-09-04 18:36:09
欄目: 編程語言

在C++中,基類(Base class)的虛函數(shù)(Virtual function)允許派生類(Derived class)重寫(Override)這些函數(shù),從而實(shí)現(xiàn)多態(tài)性。多態(tài)是面向?qū)ο缶幊痰囊粋€重要特性,它允許我們通過基類指針或引用調(diào)用派生類的成員函數(shù)。

以下是使用C++基類虛函數(shù)的步驟:

  1. 在基類中聲明虛函數(shù):
class Base {
public:
    virtual void foo() {
        cout << "Base::foo()"<< endl;
    }
};

注意virtual關(guān)鍵字,它表示foo()是一個虛函數(shù)。

  1. 在派生類中重寫虛函數(shù):
class Derived : public Base {
public:
    void foo() override {
        cout << "Derived::foo()"<< endl;
    }
};

注意override關(guān)鍵字,它表示foo()重寫了基類的虛函數(shù)。

  1. 使用基類指針或引用調(diào)用派生類的成員函數(shù):
int main() {
    Base* basePtr = new Derived();
    basePtr->foo(); // 輸出 "Derived::foo()"

    Base& baseRef = *basePtr;
    baseRef.foo(); // 輸出 "Derived::foo()"

    delete basePtr;
    return 0;
}

在這個例子中,我們創(chuàng)建了一個Derived類的對象,并將其地址賦給了Base類的指針basePtr。然后,我們通過basePtr調(diào)用foo()函數(shù),實(shí)際上調(diào)用的是Derived類的foo()函數(shù)。這就是多態(tài)性的體現(xiàn)。

同樣,我們也可以使用基類引用baseRef來調(diào)用foo()函數(shù),實(shí)現(xiàn)相同的效果。

注意:在使用基類指針或引用時(shí),請確保正確地管理內(nèi)存和生命周期,以避免內(nèi)存泄漏和其他問題。在這個例子中,我們使用delete釋放了basePtr指向的內(nèi)存。

0