一:初识
1.在C++中程序中不允许相同的函数出现,否则调用时无法区分函数;
2.区分函数靠的不仅是函数名,还有函数的参数列表,如果多个函数拥有相同的函数名,但参数列表不同,则称为函数重载。
int fun();
int fun(int,double);
int fun(float);
函数的返回值不能用来区别函数。
二:示例代码
#include<iostream>
#include<cstdlib>
using namespace std;
#define MIN 1e-6
bool isZero(int x)
{
return 0 == x;
}
bool isZero(double x)
{
return -MIN < x < MIN;
}
bool isZero(char x)
{
return '0' == x;
}
int main(int argc, char *argv[])
{
cout << "Is Zero?" << endl;
cout << 1 << '\t' << isZero(1) << endl;
cout << 0 << '\t' << isZero(0) << endl;
cout << 1.0 << '\t' << isZero(1.0) << endl;
cout << 1e-9 << '\t' << isZero(1e-9) << endl;
cout << 'a' << '\t' << isZero('a') << endl;
return 0;
}
执行结果:
三:总结
1)如果一个函数名被重载,那么调用函数选择的过程就是重载解析;
重载解析步骤:i)确定实参列表属性,确定候选函数的集合;
ii)根据实参个数和类型确定合适的函数;
iii)选择精确匹配的函数。