0%

C++之函数重载

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);

时编译器无法确定究竟应该调用哪个函数.