函数重载是C所没有的内容。所谓重载,就是几个函数具有相同的函数名,函数参数个数或类型不同,系统在编译时会根据实际的实参个数和类型来决定调用哪一个函数。下面程序中的max()函数就是重载。
#include<iostream>
using namespace std;
/* 以下各个函数名字一样,但参数个数或类型不一样*/
int max(int x,int y) // max():返回2个整数中的大数
{ return(x>y ? x:y);
}
int max(int x,int y,int z)// max():返回3个整数中的大数
{ int temp=max(x,y);
return(temp>z ? temp:z);
}
double max(double x,double y)// max():返回2个双精度数中的最大数
{ return(x>y ? x:y);
}
double max(double x,double y,double z)// max():返回3个双精度数中的最大数
{ double temp=max(x,y);
return(temp>z ? temp:z);
}
char max(char x,char y) // max():返回2个字符数中的最大数
{ return(x>y ? x:y);
}
int max(char x,char y,char z) // max():返回3个字符数中的最大数
{ int temp=max(x,y);
return(temp>z ? temp:z);
}
int main()
{ cout<<"max(3,5)="<<max(3,5)<<endl;
cout<<"max(4,5,8)="<<max(4,5,8)<<endl;
cout<<"max(3.1,5.6)="<<max(3.1,5.6)<<endl;
cout<<"max(15.3,13.4,27.8)="<<max(15.3,13.4,27.8)<<endl;
cout<<"max('a','b')="<<max('a','b')<<endl;
cout<<"max('d','e','h')="<<max('d','e','h')<<endl;
system("pause");
return 0;
}
请参照课本P29-31页面相关内容。
请思考如下几个问题:
1.重载有什么好处?
2.什么时候会出现重载的二义性错误?
3.自己定一个程序,定义几个重载函数程序。