在C++中,基類(Base class)的虛函數(shù)(Virtual function)允許派生類(Derived class)重寫(Override)這些函數(shù),從而實(shí)現(xiàn)多態(tài)性。多態(tài)是面向?qū)ο缶幊痰囊粋€重要特性,它允許我們通過基類指針或引用調(diào)用派生類的成員函數(shù)。
以下是使用C++基類虛函數(shù)的步驟:
class Base {
public:
virtual void foo() {
cout << "Base::foo()"<< endl;
}
};
注意virtual
關(guān)鍵字,它表示foo()
是一個虛函數(shù)。
class Derived : public Base {
public:
void foo() override {
cout << "Derived::foo()"<< endl;
}
};
注意override
關(guān)鍵字,它表示foo()
重寫了基類的虛函數(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)存。