c++允许将功能相近的函数在相同的作用域内以相同函数名定义
形参类型不同
int add(int x,int y);
float add(float x,float y);
形参个数不同
int add(int x,int y);
int add(int x, int y,int z);
注意:
重载函数的形参必须不同:个数不同或类型不同
编译器不以形参名来区分,不以返回值来区分
int add(int x,int y);int add(int a,int b);【错误】
不要将不同功能的函数声明为重载函数,以免出现调用结果的误解,混淆
一个函数重载的例子
#include<iostream>
using namespace std;
int max1(int x, int y)
{
return x > y ? x : y;
}
int max1(int x, int y, int z)
{
return max1(max1(x, y), z);
}
double max1(double x, double y)
{
return x > y ? x : y;
}
double max1(double x, double y,double z)
{
return max1(max1(x, y), z);
}
int main()
{
int i=5, j=89, k=34;
double i2=5.0, j2=56.0, k2=34.0;
cout << max1(i, j) << endl;
cout << max1(i, j,k) << endl;
cout << max1(i2, j2) << endl;
cout << max1(i2, j2,k2) << endl;
system("pause");
return 0;
}
定义的浮点数与整数不是相等的,判断两个浮点数是否相等应该
abs(f1-f2)<1e-10;则相等
两个数的差值小于10 的负10次方
1.23e-10及1.23乘以10的负10次方