C++ 函数的重载
1.函数重载概述作用函数名可以相同提高代码的复用性满足条件a.同一作用域类下b.函数名称相同c.函数参数类型/个数/顺序 不同注函数的“返回值不同”不作为函数重载的条件。下面针对函数重载的条件编写代码#includeiostream using namespace std; void func(){} //无参 void func(int a, int b){} //参数个数不同 void func(int a, double b){} //参数类型不同 void func(int a, int b, int c){} //参数个数不同 类型不同 void func(double a, int b){} //参数顺序不同 void func(double a){} //参数个数不同 int main(){ return 0; }上述函数均为func()的函数重载。那编译器如何对这些重载函数作区分呢可以参考下面的表格重载函数教学示例GCC编译器改编的符号void func(){}func_Z4funcvvoid func(int a, int b){}funcintint_Z4funciivoid func(int a, double b){}funcintdouble_Z4funcidvoid func(int a, int b, int c){}funcintintint_Z4funciiivoid func(double a, int b){}funcdoubleint_Z4funcdivoid func(double a){}funcdoubleint_Z4funcd2.函数重载使用的注意事项【1】引用作为重载条件#includeiostream using namespace std; void func(int a){ cout 调用int a endl; } void func(const int a){ cout 调用const int a endl; } int main(){ int a 10; func(a); //调用int a func(10); //调用const int a return 0; }上面代码的运行结果很好理解a在主函数中作为左值只能传入左值引用而10作为常量右值只能传入右值引用或万能引用。【2】函数重载遇到默认参数可能会产生歧义#includeiostream using namespace std; void func(int a, int b 10){ cout 调用int a, int b 10 endl; } void func(int a){ cout 调用int a endl; } int main(){ func(10);//报错因为不知道该调用哪一个重载函数产生歧义 }