C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同, 这就是函数重载.
实际上, 编译器在确定一个函数时, 不但会使用函数名作为函数的标识符, 还会使用函数入参的类型. 例如下面的例子:
//函数重载
void print (int a);
void print (float a);
void print (string a);
//编译器翻译后的函数名
_print_int
_print_float
_print_string
既然C++可以用函数名和参数类型结合的方式标识一个函数, 为什么不能使用返回值来标识函数呢? 参考以下的代码:
int print(int a){
return a;
}
float print(int a){
return a * 0.1;
}
上面两个函数只有返回值不同, 这样使用语句:
print(5);
时编译器无法确定究竟应该调用哪个函数.