C++ 函数重载:核心规则、实现机制与实战案例
函数重载是 C++ 多态性的重要体现,允许在同一个作用域内定义多个同名函数。通过参数列表的差异(类型或数量),编译器能够区分调用哪一个版本。这一机制不仅简化了函数命名,避免了为相似功能创建不同名称的冗余,还让函数调用更加灵活,适配不同类型或数量的输入。
需要注意的是,函数返回值不能作为区分重载函数的依据。如果仅返回值不同而参数列表一致,编译器将无法确定调用哪个函数,导致编译错误。
#include <iostream>
using namespace std;
// 非法重载:仅返回值不同
int add(int a, int b) {
return a + b;
}
double add(int a, int b) {
return (double)(a + b);
}
int main() {
// 编译错误:无法区分调用哪个 add 函数
cout << add(1, 2) << endl;
return 0;
}
一、函数重载的匹配规则
当调用一个重载函数时,编译器会按照特定的优先级顺序来确定匹配哪一个版本。这个顺序大致可以概括为:精确匹配 → 提升匹配 → 转换匹配。
1. 精确匹配
当函数调用的参数类型和数量与某一重载函数的声明完全一致时,触发精确匹配。这是最优先的匹配方式。
#include <iostream>
#include <string>
using namespace std;
// 重载函数 1:两个 int 类型参数
void print(int a, b) {
cout << << a << << b << endl;
}
{
cout << << s << endl;
}
{
(, );
();
;
}


