C++ 函数重载
提示
- 函数重载的定义:在C++中,当两个或多个函数具有相同的名称但参数的数量和/或类型不同时,这些函数称为重载函数。
- 参数类型和数量的不同:重载函数可以根据参数的不同类型或数量来进行区分,它们可以有相同或不同的返回类型。
- 实例和应用:通过使用不同类型或数量的参数,函数重载允许相同名称的函数执行不同的操作。例如,标准库函数
sqrt()
就是一个重载函数,可以接受不同类型的参数。
在 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){ }
这里,两个函数具有相同的名称、类型和数量的参数。因此,编译器将抛出错误。
示例 1:使用不同类型的参数进行重载
// 计算绝对值的程序
// 适用于 int 和 float 类型
#include <iostream>
using namespace std;
// 带有 float 类型参数的函数
float absolute(float var){
if (var < 0.0)
var = -var;
return var;
}
// 带有 int 类型参数的函数
int absolute(int var) {
if (var < 0)
var = -var;
return var;
}
int main() {
// 调用带 有 int 类型参数的函数
cout << "-5 的绝对值 = " << absolute(-5) << endl;
// 调用带有 float 类型参数的函数
cout << "5.5 的绝对值 = " << absolute(5.5f) << endl;
return 0;
}
输出
-5 的绝对值 = 5
5.5 的绝对值 = 5.5
在这个程序中,我们重载了 absolute()
函数。根据函数调用时传递的参数类型,调用相应的函数。
示例 2:使用不同数量的参数进行重载
#include <iostream>
using namespace std;
// 带有 2 个参数的函数
void display(int var1, double var2) {
cout << "整数: " << var1;
cout << " 和浮点数: " << var2 << endl;
}
// 带有单个 double 类型参数的函数
void display(double var) {
cout << "浮点数: " << var << endl;
}
// 带有单个 int 类型参数的函数
void display(int var) {
cout << "整数: " << var << endl;
}
int main() {
int a = 5;
double b = 5.5;
// 调用带有 int 类型参数的函数
display(a);
// 调用带有 double 类型参数的函数
display(b);
// 调用带有 2 个参数的函数
display(a, b);
return 0;
}
输出
整数: 5
浮点数: 5.5
整数: 5 和浮点数: 5.5
这里,display()
函数被三次调用,每次传入不同的参数。根据传递的参数的数量和类型,调用相应的 display()
函数 。
这些函数的返回类型都相同,但这并不是函数重载所必需的。
注意:在 C++ 中,许多标准库函数都是重载的。例如,sqrt()
函数可以接受 double
、float
、int
等参数。这是因为 C++ 中的 sqrt()
函数是重载的。