函数重载

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

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

下面是一个完整的代码

#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;
}

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

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

典例

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

#include<iostream>
#include<iomanip>
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;
}
#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;
}

发表评论