重载函数:同名同体,但接口不同
#include <iostream>
using namespace std;
int max(int a,int b,int c); //函数声明
double max(double a,double b,double c);
long max(long a,long b,long c);
int main( )
{
int i1,i2,i3,i;
cin>>i1>>i2>>i3; //输入3个整数
i=max(i1,i2,i3); //求3个整数中的最大者
cout<<"i_max="<<i<<endl;
double d1,d2,d3,d;
cin>>d1>>d2>>d3; //输入3个双精度数
d=max(d1,d2,d3); //求3个双精度数中的最大者
cout<<"d_max="<<d<<endl;
long g1,g2,g3,g;
cin>>g1>>g2>>g3; //输入3个长整数
g=max(g1,g2,g3); //求3个长整数中的最大者
cout<<"g_max="<<g<<endl;
}
int max(int a,int b,int c)
{
if(b>a) a=b;
if(c>a) a=c;
return a;
}
double max(double a,double b,double c)
{
if(b>a) a=b;
if(c>a) a=c;
return a;
}
long max(long a,long b,long c)
{
if(b>a) a=b;
if(c>a) a=c;
return a;
}
重载函数:同名不同体,参数个数有区别
#include <iostream>
using namespace std;
int max(int a,int b,int c); //函数声明
int max(int a,int b);
int main( )
{
int a=8,b=-12,c=27;
//输出3个整数中的最大者
cout<<"max(a,b,c)="<<max(a,b,c)<<endl;
//输出两个整数中的最大者
cout<<"max(a,b)="<<max(a,b)<<endl;
}
int max(int a,int b,int c)
{
if(b>a) a=b;
if(c>a) a=c;
return a;
}
int max(int a,int b)
{
if(a>b) return a;
else return b;
}
函数重载与参数的默认值不要冲突
#include <iostream>
using namespace std;
int max(int a,int b,int c=5); //函数声明
int max(int a,int b);
int main( )
{
int a=8,b=-12,c=27;
cout<<"max(a,b,c)="<<max(a,b,c)<<endl;
cout<<"max(a,b)="<<max(a,b)<<endl;
return 0;
}
int max(int a,int b,int c)
{
if(b>a) a=b;
if(c>a) a=c;
return a;
}
int max(int a,int b)
{
if(a>b) return a;
else return b;
}