是的,C++的繼承機制可以實現虛函數。虛函數是在基類中聲明的,可以在派生類中被重寫(override)。當使用基類指針或引用調用虛函數時,會根據指針或引用指向的實際對象類型動態地調用對應的派生類中的虛函數。這就是動態綁定或多態的概念。
以下是一個簡單的示例:
#include <iostream>
class Base {
public:
virtual void print() {
std::cout << "Base class print function" << std::endl;
}
};
class Derived : public Base {
public:
void print() override {
std::cout << "Derived class print function" << std::endl;
}
};
int main() {
Base* basePtr = new Derived();
basePtr->print(); // 輸出 "Derived class print function"
delete basePtr;
return 0;
}
在這個示例中,Base
類中的 print
函數被聲明為虛函數,Derived
類重寫了這個函數。在 main
函數中,我們使用基類指針 basePtr
指向派生類對象,并調用 print
函數。盡管指針指向的是基類對象,但實際調用的是派生類中的 print
函數,這就是動態綁定的體現。