函数在声明时可以预先给出缺省的形参值,调用时如给出实参,则采用实参值,否则采用预先给出的缺省形参值。
例如:
int add(int x = 5,int y = 6) {
return x + y;
}
int main() {
add(10,20);//10+20
add(10); //10+6
add(); //5+6
}
有缺省参数的形参必须在形参列表的最后,也就是说缺省形参值的右面不能有无缺省值的参数。因为调用时实参与形参的结合是从左向右的顺序。
例:
int add(int x, int y = 5, int z = 6);//正确
int add(int x = 1, int y = 5, int z);//错误
int add(int x = 1, int y, int z = 6);//错误
如果一个函数有原型声明,且原型声明在定义之前,则缺省形参值必须在函数原型声明中给出;而如果只有函数的定义,或函数定义在前,则缺省形参值需在函数定义中给出。
例1:
int add(int x = 5,int y = 6); //原型声明在前
int main() { add(); }
int add(int x,int y) { //此处不能再指定缺省值 return x + y;}
例2:int add(int x = 5,int y = 6) { //只有定义,没有原型声明
return x + y; }
int main() { add(); }