在C++中,基類(Base class)的虛函數(Virtual function)允許派生類(Derived class)重寫(Override)這些函數,從而實現多態性。多態是面向對象編程的一個重要特性,它允許我們通過基類指針或引用調用派生類的成員函數。
以下是使用C++基類虛函數的步驟:
class Base {
public:
virtual void foo() {
cout << "Base::foo()"<< endl;
}
};
注意virtual
關鍵字,它表示foo()
是一個虛函數。
class Derived : public Base {
public:
void foo() override {
cout << "Derived::foo()"<< endl;
}
};
注意override
關鍵字,它表示foo()
重寫了基類的虛函數。
int main() {
Base* basePtr = new Derived();
basePtr->foo(); // 輸出 "Derived::foo()"
Base& baseRef = *basePtr;
baseRef.foo(); // 輸出 "Derived::foo()"
delete basePtr;
return 0;
}
在這個例子中,我們創建了一個Derived
類的對象,并將其地址賦給了Base
類的指針basePtr
。然后,我們通過basePtr
調用foo()
函數,實際上調用的是Derived
類的foo()
函數。這就是多態性的體現。
同樣,我們也可以使用基類引用baseRef
來調用foo()
函數,實現相同的效果。
注意:在使用基類指針或引用時,請確保正確地管理內存和生命周期,以避免內存泄漏和其他問題。在這個例子中,我們使用delete
釋放了basePtr
指向的內存。