Appearance
相同的范围:重载的函数必须在同一个作用域内,可以是全局作用域或类作用域。
函数名相同:重载的函数必须具有相同的函数名。
参数列表不同:重载的函数必须具有不同的参数列表。这包括参数的数量、类型或顺序的差异。
返回类型可以相同也可以不同:函数重载可以具有相同的返回类型,但它们也可以有不同的返回类型。
仅根据返回类型的差异是无法进行函数重载的。函数重载的决定因素是函数名和参数列表。
cpp
int myMax(int a, int b) { return a > b ? a : b; }
int myMax(int a, int b, int c) { return myMax(myMax(a, b), c); }
double myMax(int a, int b) { return a > b ? a : b; }
double myMax(double a, double b) { return a > b ? a : b; }
double myMax(double a, double b, double c) { return myMax(myMax(a, b), c); }CPP 的函数重载和函数默认参数可以同时使用:
cpp
int add(int a, int b=100);
int add(int a, int b);但是在调用函数的时候,add(2,5)会报错,因为编译器不知道要调用哪个函数(重载的函数在编译到汇编的时候,有不同的函数名)。