C++ 虚函数与纯虚函数:多态核心实现机制
💡 学习目标:深度理解虚函数与纯虚函数的本质区别,掌握虚函数表的底层原理,能够灵活运用二者设计具备多态特性的类结构。 💡 学习重点:虚函数的声明与重写规则、纯虚函数与抽象类的使用场景、虚函数表的工作机制、虚函数的常见陷阱与解决方案。
一、虚函数的本质与定义
✅ 结论:虚函数是 C++ 实现动态多态的核心,通过在基类成员函数前添加 virtual 关键字,允许派生类重写该函数,并在运行时根据对象的实际类型调用对应版本。
1.1 虚函数的声明语法
虚函数的声明必须在基类中进行,语法格式如下:
class 基类名 {
public:
virtual 返回值类型 函数名 (参数列表) {
// 函数体
}
};
1.2 虚函数的核心特性
- 运行时绑定:函数调用关系在程序运行时确定,而非编译时。
- 重写规则:派生类重写的函数必须与基类虚函数的函数名、参数列表、返回值类型完全一致(协变类型除外)。
- 继承性:基类声明虚函数后,派生类中重写的函数自动成为虚函数,无需重复添加
virtual关键字(建议保留以增强可读性)。
1.3 虚函数的基础使用案例
#include <iostream>
#include <string>
using namespace std;
// 基类:交通工具
class Vehicle {
public:
// 虚函数:行驶
virtual void run() {
cout << "交通工具正在行驶" << endl;
}
};
// 派生类:汽车
class Car : public Vehicle {
public:
// 重写基类虚函数
void run {
cout << << endl;
}
};
: Vehicle {
:
{
cout << << endl;
}
};
{
Vehicle *v1 = ();
Vehicle *v2 = ();
v1->();
v2->();
v1;
v2;
;
}


