当参数不同的函数有相同的名字,调用时根据参数不同确定调用那个函数,这就是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;
}