函数重载

当参数不同的函数有相同的名字,调用时根据参数不同确定调用那个函数,这就是C++的函数重载机制,即overload,下面是一串重载函数示例代码

1
2
3
4
void add(int x,int y);
void add(float x);
double add(double x, double y);
//三个add()函数都为重载函数

下面是一个完整的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
void add(int x, int y)
{
cout << "int:" << x + y << endl;
}
void add(double x)
{
cout << "double:" << 10 + x << endl;
}
double add(double x, double y)
{
cout << "double2:" << x + y << endl;
return 0;
}
int main()
{
add(10.2);//里面是小数且只有一个,所以会被传递到第二个add()函数内
add(1, 3);//里面均为整数且有两个,所以会被传递到第一个add()函数内
add(10.2,10.3);//这个就不用多说了
return 0;
}

其中需要注意,当函数具有默认参数时,重载函数很容易出现歧义,也就是二义性,例如:

1
2
3
int add(int x,int y=1);
void add(int x);
//这时候如果我们只传入一个参数,编译器就会报错,因为这两个函数都能与之匹配

典例

程序填空,使用函数重载,使得输出为
1
7
55.55
99.994

#include
#include
using namespace std;
// 在这里补充你的代码
int main()
{
cout << add(true, true) << endl;
cout << add(3, 4) << endl;
cout << add(22.22, 33.33) << endl;
cout << add(22.22, 33.33, 44.444) << endl;
return 0;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
#include<iomanip>
using namespace std;
bool add(bool x, bool y)
{
return x * y;
}
int add(int x, int y)
{
return x + y;
}
double add(double x, double y,double z=0)//不是说要尽量少用吗?但是这里他方便啊
{
return x + y + z;
}

int main()
{
cout << add(true, true) << endl;
cout << add(3, 4) << endl;
cout << add(22.22, 33.33) << endl;
cout << add(22.22, 33.33, 44.444) << endl;
return 0;
}

函数重载
https://niaoluo.top/2023/05/04/学习相关/C++/函数重载/
作者
熙恩
发布于
2023年5月4日
许可协议