多个函数同名,但参数列表不同(参数个数、类型或顺序不同),编译器通过函
数签名区分。
// 1. 两个int的最大值
int max(int a,int b){ return a > b ? a : b;}
// 2. 两个double的最大值
double max(double a, double b){ return a > b ? a : b; }
// 3. 三个double的最大值(调用两个重载)
double max(double a, double b, double c){return max(max(a,b),c);}
// 调用:
max(3, 4);// 匹配1,返回4
max(3.0, 5.4);// 匹配2,返回5.4
max(3.0, 5.4, 10.1);// 匹配3,返回10.1
注意:歧义调用(Ambiguous Invocation)
(二)函数原型(Function Prototype)
函数声明的简化形式,仅指定函数签名和返回值类型,无需实现(函数体),用于告诉编译器函数的“接口”。
示例:使用函数原型
#include <iostream>
using namespace std;
//函数原调(声明)
int max(int a, int b);
double max(double a, double b);
int main(){
cout << max(3, 4) << endl; //可正常调用,无需提前看到函数定义
return 0;
}
//函数定义(实现)
int max(int a, int b){ return a > b ? a : b;}
double max(double a, double b){ return a > b ? a : b;}
(三)默认参数(Default Arguments)
声明函数时为形参指定默认值,调用时可省略该参数(使用默认值)。