具有相同名称但参数不同的两个或多个函数称为重载函数,函数是指将代码分组以执行特定任务的代码片段。
在C ++编程中,如果传递的参数的个数或类型不同,则两个函数可以具有相同的名称。
这些具有不同参数个数或类型(或两者兼有)参数的函数称为重载函数。例如:
int test() { }
int test(int a) { }
float test(double a) { }
int test(int a, double b) { }
这里,所有4个函数都是重载函数,因为传递给这些函数的参数不同。
注意,这4个函数的返回类型并不相同。重载函数可能有也可能没有不同的返回类型,但是应该有不同的参数。
// 错误代码
int test(int a) { }
double test(int b){ }
即使返回类型不同,但是传递给这两个函数的参数个数和数据类型都相同。因此,编译器将抛出错误。
示例:函数重载
#include <iostream>
using namespace std;
void display(int);
void display(float);
void display(int, float);
int main() {
int a = 5;
float b = 5.5;
display(a);
display(b);
display(a, b);
return 0;
}
void display(int var) {
cout << "整数: " << var << endl;
}
void display(float var) {
cout << "浮点数: " << var << endl;
}
void display(int var1, float var2) {
cout << "整数: " << var1;
cout << " 和浮点数:" << var2;
}
输出结果
整数: 5
浮点数: 5.5
整数: 5 和浮点数:5.5
在这里,display()函数使用不同类型或数量的参数调用了三次。
所有这些函数的返回类型都是相同的,但这不是必需的。
示例:函数重载
//程序计算绝对值
//对整数和浮点数都有效
#include <iostream>
using namespace std;
int absolute(int);
float absolute(float);
int main() {
int a = -5;
float b = 5.5;
cout << "数字 " << a << " 的绝对值= " << absolute(a) << endl;
cout << "数字 " << b << " 的绝对值= " << absolute(b);
return 0;
}
int absolute(int var) {
if (var < 0)
var = -var;
return var;
}
float absolute(float var){
if (var < 0.0)
var = -var;
return var;
}
输出结果
数字 -5 的绝对值= 5
数字 5.5 的绝对值= 5.5
在上面的示例中,两个 absolute()函数被重载。
这两个函数都采用单个参数。但是,一个函数将integer作为参数,而另一个将float作为参数。
以int作为参数调用absolute()函数时,调用此函数:
int absolute(int var) {
if (var < 0)
var = -var;
return var;
}
以float作为参数调用absolute()函数时,将调用此函数:
float absolute(float var){
if (var < 0.0)
var = -var;
return var;
}