1、函数重载
在函数重载的情况下,多个函数可以有相同的名称,但参数不同:
例如,
int myFunction(int x)
float myFunction(float x)
double myFunction(double x, double y)
两个函数可以添加不同类型的参数:
例如,
#include <iostream>
using namespace std;
int plusFuncInt(int x, int y) {
return x + y;
}
double plusFuncDouble(double x, double y) {
return x + y;
}
int main() {
int myNum1 = plusFuncInt(7, 4);
double myNum2 = plusFuncDouble(4.2, 3.11);
cout << "Int: " << myNum1 << "\n";
cout << "Double: " << myNum2;
return 0;
}
与其定义两个应该做同样事情的函数,不如重载一个函数。
在下面的例子中,重载plusFunc
函数,使其同时适用于int
和double
:
例如,
#include <iostream>
using namespace std;
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 << "Int: " << myNum1 << "\n";
cout << "Double: " << myNum2;
return 0;
}
注意:多个函数可以有相同的名称,只要参数的数目和/或类型不同。
2、函数重载的规则
1)函数名称必须相同。
2)参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)。
3)函数的返回类型可以相同也可以不相同。
4)仅仅返回类型不同不足以成为函数的重载。
5)使用示例
#include<iostream>
using namespace std;
// 重载函数:求和
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
// 不同参数类型的重载
int add(int a, double b) {
return a + b;
}
double add(double a, int b) {
return a + b;
}
int main() {
// 调用 int add(int, int)
cout << "Sum of 3 and 4: " << add(3, 4) << endl;
// 调用 double add(double, double)
cout << "Sum of 3.5 and 4.2: " << add(3.5, 4.2) << endl;
// 调用 int add(int, double)
cout << "Sum of 3 and 4.5: " << add(3, 4.5) << endl;
// 调用 double add(double, int)
cout << "Sum of 3.5 and 4: " << add(3.5, 4) << endl;
return 0;
}
3、函数重载的作用
重载函数通常用来在同一个作用域内 用同一个函数名 命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。