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
新闻热点
疑难解答
图片精选