C++允许用同一个函数名定义多个函数,而这些函数的参数个数和参数类型可以不相同。这就是函数重载。
注意是个数和类型都能不同
其意义在于,如果想要实现一个功能,但是由于变量类型不同或参数个数不同的情况,需要定义不同名称的功能相同的函数,而函数重载功能可以允许用户只定义一个函数名,这个函数名有多个不同的含义,使得一个函数名可以多用,而在调用该函数时,系统会根据实参类型和个数的不同自动找到与之匹配的函数,然后调用该函数。
所以,函数重载功能的本质是可以只用一个函数名(重载它),但是想要给这个函数名赋予多个不同的含义,还是要定义。比如要实现一个找最大值的功能,但是实参可能是int 或double类型,那么还是要定义两个不同的函数,只是他们用了同一个名字,如下:
其实c++为了解决这个问题,提供了另一个函数模板功能:
http://blog.csdn.net/chaipp0607/article/details/55546582
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;
}
举个例子:函数参数个数相同,但是参数类型不同
#include <iostream>
using namespace std;
int main( )
{
int max(int a,int b,int c);
double max(double a,double b,double c);
int i =1;
int j =2;
int k =3;
int l = max(i,j,k);
cout <<l<<endl;
double q =1.11;
double w =2.21;
double e =3.31;
double r = max(q,w,e);
cout <<r<<endl;
getchar();
return 0;
}
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;
}
运行结果:
3
3.31
举个例子:函数参数个数不同,参数类型相同
#include <iostream>
using namespace std;
int main( )
{
int max(int a,int b);
int max(int a,int b,int c);
int i =1;
int j =2;
int k =3;
int m = max(i,j);
int l = max(i,j,k);
cout <<m<<endl;
cout <<l<<endl;
getchar();
return 0;
}
int max(int a,int b)
{
if (b>a) a=b;
return a;
}
int max(int a,int b,int c)
{
if (b>a) a=b;
if (c>a) a=c;
return a;
}
运行结果:
2
3