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