Linux C++中多态的实现方式
作为C++三大特性之一,多态通过基类指针或引用调用派生类重写函数实现运行时动态绑定,主要依靠虚函数(基类声明虚函数、派生类重写)和抽象类(含纯虚函数)两种方式,提升代码灵活性和可扩展性。
在C++的面向对象体系里,多态是一个绕不开的核心概念。简单来说,它允许我们用基类的指针或引用去调用派生类的成员函数,实现所谓的动态绑定。那么,具体怎么做到的呢?主要靠两条路——虚函数和抽象类。往下看。

一、虚函数
虚函数,就是在基类中用关键字 virtual 声明的成员函数。派生类拿到这个基类后,可以重写(override)这些函数。关键来了:当通过基类的指针或引用去调用虚函数时,C++ 不会只看指针的静态类型,而是根据它实际指向的对象类型来决定调用哪个函数。这就是动态绑定的本质。
看个例子就清楚了:
#include
class Base {
public:
virtual void print() {
std::cout << "Base class print function" << std::endl;
}
};
class Derived : public Base {
public:
void print() override {
std::cout << "Derived class print function" << std::endl;
}
};
int main() {
Base *basePtr;
Derived derivedObj;
basePtr = &derivedObj;
basePtr->print(); // 输出的是 Derived 类的版本
return 0;
}
这里 basePtr 明明是 Base 类型的指针,但它指向的是 Derived 对象,所以调用 print() 时,输出的是 “Derived class print function”。如果没有 virtual,那就会调用 Base 的版本——差别就在这。
二、抽象类
抽象类是一种不能实例化的类,它通常用来定义接口。怎么定义?靠纯虚函数(pu re virtual function)。纯虚函数在基类中只有声明,没有实现,必须在派生类里完成具体的逻辑。只要一个类包含至少一个纯虚函数,它就成了抽象类。
示例很直观:
#include
class AbstractBase {
public:
virtual void print() = 0; // 纯虚函数,没有实现
};
class Derived : public AbstractBase {
public:
void print() override {
std::cout << "Derived class print function" << std::endl;
}
};
int main() {
AbstractBase *abstractBasePtr;
Derived derivedObj;
abstractBasePtr = &derivedObj;
abstractBasePtr->print(); // 输出 Derived 类的版本
return 0;
}
你看,AbstractBase 本身不能创建对象,但是可以定义指针,指向派生类对象,然后调用派生类实现的 print()。这种设计在框架和库中非常常见——通过抽象类定义一套接口契约,具体行为留给子类去填充。
说到底,C++ 里的多态就是靠虚函数和抽象类这两板斧。虚函数让动态绑定成为可能,抽象类则帮我们搭出清晰的接口架构。用好它们,代码的扩展性和可维护性会提升一个档次。
IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。
JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。
JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。
JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,
PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,
PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,













