C++ 函数重载
函数重载
函数重载允许多个函数拥有相同的名称,只要它们的参数在类型或数量上不同即可:
实例
int myFunction(int x) float myFunction(float x) double myFunction(double x, double y)
这让您可以为相似的任务使用相同的函数名。
没有函数重载的情况
考虑下面的例子,它有两个相加不同类型数字的函数:
实例
int plusFuncInt(int x, int y) {
return x + y;
}
double plusFuncDouble(double x, double y) {
return x + y;
}
int main() {
int myNum1 = plusFuncInt(8, 5);
double myNum2 = plusFuncDouble(4.3, 6.26);
cout << "整数结果:" << myNum1 << "\n";
cout << "双精度结果:" << myNum2;
return 0;
}
问题:我们不得不为相同的逻辑创建两个不同的函数名。
使用函数重载
与其定义两个功能相同的函数,不如重载其中一个函数。
在下面的例子中,我们重载了 plusFunc 函数,使其同时适用于 int 和 double:
实例
int plusFunc(int x, int y) {
return x + y;
}
double plusFunc(double x, double y) {
return x + y;
}
int main() {
int myNum1 = plusFunc(8, 5);
double myNum2 = plusFunc(4.3, 6.26);
cout << "整数结果:" << myNum1 << "\n";
cout << "双精度结果:" << myNum2;
return 0;
}
注意:只要参数的数量和/或类型不同,多个函数可以拥有相同的名称。
按参数数量进行函数重载
在这个例子中,我们通过使用不同数量的参数来重载一个函数:
实例
int plusFunc(int x, int y) {
return x + y;
}
int plusFunc(int x, int y, int z) {
return x + y + z;
}
int main() {
int result1 = plusFunc(3, 7);
int result2 = plusFunc(1, 2, 3);
cout << "2 个数的和:" << result1 << "\n";
cout << "3 个数的和:" << result2;
return 0;
}