在 C++ 中,虚函数(virtual
function)使得通过基类指针或引用调用派生类中的函数时能够实现动态绑定(动态多态)。虚函数允许程序在运行时根据实际对象的类型(而不是指针或引用的类型)来决定调用哪个函数,这就是多态的核心。
多态有两种类型:
- 静态多态:编译时决定调用哪个函数,通常通过函数重载和模板实现。
- 动态多态:运行时根据对象的实际类型决定调用哪个函数,这通常通过虚函数来实现。
虚函数与多态的使用通常依赖于继承。当基类和派生类之间存在继承关系时,基类中的虚函数可以被派生类重写(重载),并且在使用基类指针或引用调用该函数时,程序会自动调用派生类的实现。
虚函数和多态的实现
我们来看一个详细的例子来理解虚函数与多态是如何工作的:
#include<iostream>
using namespace std;
class Base {
public:
virtual void display() { // 声明虚函数
cout << "Base display function" << endl;
}
virtual ~Base() { // 虚析构函数
cout << "Base destructor called" << endl;
}
};
class Derived : public Base {
public:
void display