纯虚函数通过= 0声明,使类成为抽象类,强制派生类重写以实现多态。例如virtual void draw() = 0;定义接口规范,确保子类提供具体实现,常用于图形库、游戏开发等需统一接口的场景。

在C++中,纯虚函数是一种特殊的虚函数,它在基类中声明但没有定义,要求派生类必须提供具体实现。含有纯虚函数的类被称为抽象类,不能直接实例化对象。
纯虚函数的语法形式
纯虚函数通过在函数声明后加上 = 0 来标识。其基本语法如下:
virtual 返回类型 函数名(参数列表) = 0;
例如:
立即学习“C++免费学习笔记(深入)”;
virtual void draw() = 0;
这表示 draw() 是一个纯虚函数,任何继承该类的子类都必须重写这个函数。
纯虚函数的作用
纯虚函数的主要作用是为基类定义接口规范,强制派生类实现特定功能,从而实现多态性。
抽象类与纯虚函数的关系
只要类中有一个纯虚函数,这个类就成为抽象类。抽象类不能创建对象,只能作为基类被继承。
派生类必须重写所有继承的纯虚函数,否则该派生类也仍然是抽象类,无法实例化对象。
示例:
class Shape {
public:
virtual void draw() = 0; // 纯虚函数
};
class Circle : public Shape {
public:
void draw() override {
cout << “Drawing a circle” << endl;
}
};
int main() {
// Shape s; // 错误:抽象类不能实例化
Shape* ptr = new Circle();
ptr->draw(); // 输出:Drawing a circle
delete ptr;
return 0;
}
纯虚函数的实际应用场景
在设计框架或大型系统时,常使用纯虚函数来定义核心行为接口。
- 图形界面库中定义“渲染”接口,不同控件自行实现。
- 游戏开发中定义“更新”和“绘制”方法,各角色类分别实现。
- 插件系统中通过抽象接口加载外部模块。
这种设计提高了代码的可扩展性和维护性。
基本上就这些。纯虚函数是C++面向对象设计的重要工具,掌握它有助于写出结构清晰、易于扩展的程序。不复杂但容易忽略的是:即使函数体为空,也要用 = 0 表示纯虚,而不是只写 virtual 函数声明。


