虚函数 父类的引用调用子类
时间: 2024-09-18 15:05:35 浏览: 34
虚函数(Virtual Function)是一种特殊的成员函数,在C++中用于实现多态性的关键机制。当你有一个基类,并在其派生类中重写了这个基类的函数,那么这个在基类声明中被标记为`virtual`的函数就成为虚函数。当通过父类的引用或指针调用这个函数时,运行时会根据实际的对象类型来确定调用哪个版本的函数,而不是按照引用或指针本身的类型。
例如:
```cpp
class Base {
public:
virtual void display() {
std::cout << "Base class display" << std::endl;
}
};
class Derived : public Base {
public:
virtual void display() override {
std::cout << "Derived class display" << std::endl;
}
};
int main() {
Base* basePtr = new Derived(); // 创建并分配Derived对象的内存,但是引用是Base类型
basePtr->display(); // 调用的是Derived类的display方法,因为它是虚函数
delete basePtr; // 释放内存
return 0;
}
```
在这个例子中,虽然`basePtr`是一个`Base`类型的指针,但实际上指向的是`Derived`对象。因此,当我们调用`basePtr->display()`时,会执行`Derived`类的`display`函数,体现了动态绑定的特点。
阅读全文