在 C++多态 是面向对象编程(OOP)的三大核心特性之一(另外两个是封装和继承)。理解 多态性实现 对于编写灵活、可扩展的 C++ 程序至关重要。本文将从零开始,用通俗易懂的语言带你掌握 C++ 虚函数 和 面向对象编程 中的多态概念。
“多态”字面意思是“多种形态”。在 C++ 中,它指的是:同一个函数调用,在不同对象上会产生不同的行为。
举个生活中的例子:你按“播放”按钮,如果是音乐播放器,就播放音乐;如果是视频播放器,就播放视频。虽然操作相同(按播放),但结果不同——这就是多态的思想。

假设你要写一个图形绘制程序,有圆形、矩形、三角形等。如果没有多态,你可能需要这样写:
if (shapeType == "Circle") { drawCircle();} else if (shapeType == "Rectangle") { drawRectangle();} else if (shapeType == "Triangle") { drawTriangle();}// ... 更多形状?代码越来越臃肿!而使用 C++多态,你可以统一调用一个 draw() 函数,具体执行哪个版本由对象类型自动决定,代码更简洁、易维护。
C++ 通过 虚函数 实现运行时多态。关键步骤如下:
virtual;#include <iostream>using namespace std;// 基类class Animal {public: // 声明为虚函数 virtual void speak() { cout << "Animal makes a sound." << endl; }};// 派生类1class Dog : public Animal {public: void speak() override { // 重写虚函数 cout << "Dog barks!" << endl; }};// 派生类2class Cat : public Animal {public: void speak() override { cout << "Cat meows!" << endl; }};int main() { Animal* animal1 = new Dog(); Animal* animal2 = new Cat(); animal1->speak(); // 输出: Dog barks! animal2->speak(); // 输出: Cat meows! delete animal1; delete animal2; return 0;}注意:virtual 关键字只在基类中需要。派生类中的 override(C++11 起)是可选的,但强烈建议加上,它能帮助编译器检查是否真的重写了基类函数。
有时我们希望基类不提供具体实现,强制派生类必须实现某个函数。这时使用 纯虚函数:
class Shape {public: // 纯虚函数:= 0 表示没有实现 virtual void draw() = 0;};// Shape 是抽象类,不能实例化// Shape s; // 错误!class Circle : public Shape {public: void draw() override { cout << "Drawing a circle." << endl; }};包含纯虚函数的类称为 抽象类,它不能创建对象,只能作为接口被继承。
- C++多态 允许同一接口有多种实现;
- 通过 C++虚函数 实现运行时绑定;
- 使用基类指针/引用调用虚函数,程序会自动调用对应派生类的版本;
- 纯虚函数用于定义接口,创建 抽象类;
- 多态是 面向对象编程 的核心机制,极大提升代码复用性和可扩展性。
掌握这些基础,你就迈入了 C++ 高级编程的大门!动手写几个小例子,加深理解吧。
本文由主机测评网于2025-12-09发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025125167.html