C++ 多态:面向对象的动态行为核心机制
一、多态的概念与分类
多态是 C++ 面向对象三大特性之一,指同一行为在不同对象上表现出不同的形态,核心是'一个接口,多种实现'。
多态主要分为两大类,二者的实现原理和触发时机截然不同:
- 静态多态:编译阶段确定调用关系,也叫编译时多态,实现方式包括函数重载和运算符重载。
- 动态多态:运行阶段确定调用关系,也叫运行时多态,实现方式是虚函数 + 基类指针/引用。
生活中的多态示例:同样是'动物叫'这个行为,猫的叫声是'喵喵喵',狗的叫声是'汪汪汪',不同动物对象表现出不同的行为形态。
二、静态多态:编译时确定的多态性
静态多态的调用关系在编译阶段就已确定,编译器会根据参数列表的差异匹配对应的函数。
2.1 函数重载实现静态多态
这是最常见的静态多态形式,同一作用域内的同名函数,通过参数的类型或数量区分。
#include <iostream>
using namespace std;
// 静态多态:函数重载
void print(int a) { cout << "整数:" << a << endl; }
void print(double b) { cout << "浮点数:" << b << endl; }
void print(string c) { cout << "字符串:" << c << endl; }
int main() {
// 编译阶段确定调用哪个 print 函数
print(10);
print(3.14);
print("C++ Static Polymorphism");
return 0;
}
2.2 运算符重载实现静态多态
通过重载运算符,让自定义类型支持内置运算符的操作,本质也是编译时多态。
#
std;
{
:
x, y;
( x = , y = ) : (x), (y) {}
Point +( Point& p) {
(->x + p.x, ->y + p.y);
}
};
{
;
Point p3 = p1 + p2;
cout << << px << << py << endl;
;
}


