在 C++ 中,“多态(Polymorphism)”是一种面向对象编程的核心特性,它允许相同的接口在不同的对象上表现出不同的行为。
✅ 多态的定义
多态(Polymorphism) 是指在不同类的对象上对同一个函数调用,表现出不同的行为(即不同的实现)。
简单来说:
同一个函数调用,可以执行不同的函数体。
🔢 C++ 多态的分类
C++ 中的多态有两种:
类型 说明 示例特征
编译时多态 在编译阶段就能确定调用哪个函数 函数重载、运算符重载
运行时多态 在运行时根据对象的实际类型决定调用哪个函数 虚函数、继承、多态指针/引用
📌 编译时多态(静态多态)
编译器在编译期间确定要调用的函数。
例子:函数重载
#include
void print(int x) {
std::cout << "int: " << x << std::endl;
}
void print(double x) {
std::cout << "double: " << x << std::endl;
}
int main() {
print(10); // 调用 int 版本
print(3.14); // 调用 double 版本
}
📌 运行时多态(动态多态)
通过继承 + 虚函数实现,在运行时根据实际对象类型调用对应的方法。
条件:
使用 继承(基类和派生类)
基类中的函数被标记为 virtual
使用 基类指针或引用 指向 派生类对象
例子:
#include
using namespace std;
class Animal {
public:
virtual void speak() { // 虚函数
cout << “Animal speaks” << endl;
}
};
class Dog : public Animal {
public:
void speak() override {
cout << “Dog barks” << endl;
}
};
int main() {
Animal* a = new Dog(); // 用基类指针指向派生类对象
a->speak(); // 调用 Dog 的 speak,而不是 Animal 的
delete a;
}
输出:
Dog barks
✅ 多态的好处
可扩展性强:添加新的类,只需重写方法即可。
解耦:使用基类指针或引用编程,而不关心具体对象类型。
提高代码复用性和灵活性
如果你想进一步了解虚函数表(vtable)、纯虚函数、抽象类等,我也可以继续帮你深入解析。是否需要?
361



被折叠的 条评论
为什么被折叠?



