函数重载

函数重载是是根据函数的参数列表区分函数的版本(要求函数的参数个数不同或者参数类型不同),返回值不同是不能区分的。
比如 int fun( int a,int b);
在编译的时候,编译器编译函数,生成一个类似"_fun_int_int"的名称放在库中,以便程序调用的时候使用。
如果你想重载void fun( int a,int b);
生成的函数名称也是"_fun_int_int"
函数在库中的名称是唯一的,就像你在程序中定义变量一样。
这就算是重定义吧(姑且这么说),这时编译器该调用哪个函数?
函数的参数列表是重载的标识符。
int fun(int a, dobule b); //编译后生成 : _fun_int_double
int fun(int a, int b); // 编译后生成 : _fun_int_int
根据生成的名称来指定调用哪个版本的函数;
fun(1,1.2); // 进行匹配,第一个函数为最佳匹配,然后根据 _fun_int_double 找到函数