函数重载(Overload)

函数重载在C++中指的是函数名相同,参数个数不同,参数的类型不同,参数的顺序不同的多个函数构成重载。

Example

int add(int a, int b) {     return a + b; }  double add(double a,double b) {     return a + b; }  int add(int a) {     return a + 10; }  int main(){     double re = add(10.0,11.0);     cout << re << endl;     return 0; } 

注意

1.需要注意的是返回值的类型与函数重载无关。

2. 调用函数时,实参的隐式类型转换可能会产生二义性

void func(int a = 0,int b=0) {  }  void func(int a) {      }  int main(){     func(1); //这里无法分辨调用哪个函数     return 0; } 

原理

本质上只是编译器的特性,C++编译器默认会对符号名(比如函数名)进行改编、修饰、对重载的函数生成不同的函数名,但是不同的编译器(MSVC,g++)会有不同的规则。这种技术通常叫做name mangling 或者name decoration技术