一、函数重载
定义:如果同一作用域内的几个函数名字相同但形参列表不同,我们称之为重载函数。但是需要注意的是:main函数不能重载。
二、函数匹配
定义:是指一个过程,在这个过程中我们把函数调用与一组重载函数中的某一个关联起来,所以函数匹配也叫做重载确定。
三、当调用重载函数时有三种可能的结果
(1)编辑器找到一个与实参最佳匹配的函数,并生成调用该函数的代码
(2)找不到任何一个函数与调用的实参匹配,此时的编译器发出无匹配的错误信息
(3)有多于一个函数可以匹配,但是每一个都不是明显的最佳选择,此时也将发生错误,称为二义性调用。
四、例题
说明在下面的每一组声明中第二条生命语句是何含义,如果有非法的声明,请指出来。
(a)int calc(int, int);
int calc(const int,const int);
(b)int get ();
double get();
(c)int *reset(int *);
double *reset(double *);
解析:考察知识点:
知识点1:函数的重载必须有**形参数量或者形参类型上的不同**
知识点2:顶层const不影响传入函数的对象
**需要注意的是:函数的重载是一个很重要的知识点,需要多看,深入理解。**
(a):错误,只是重复命名了
(b):错误
(c):正确
五、重载与作用域
实际上,重载对作用域的一般性质并没有什么改变,如果我们在内层作用域中声明名字,它将隐藏外层作用域中声明的同名实体。在不同的作用域中无法重载函数名。