最近的项目里写了含有默认值参数的函数,和小伙伴集成的时候却出了问题,反馈说参数不足,查了一下,总结定义默认值参数的规范:
1,定义:
参数默认值是指,在函数定义时赋予形参指定值。这样在函数调用时,可以不传含有默认值的形参位置对应的实参,以使用默认值。
EG:定义
- void func(int a, int b = 1, int c = 2);
使用
- func(0); // 即 func(0,1,2)
2,规范:
- 若函数有定义和实现,参数默认值在函数定义中写明,并只写这一次。
EG: 定义
- void func(int a, int b = 1, int c = 2);
实现
- void func(int a, int b, int c){ something cool; }
- 参数的默认值可以是函数,常数,全局变量,但不可以是临时变量。
- 一个函数的所有形参中,有默认值的形参必须在没有默认值的形参右侧。
EG: 一个错误形式
- void func(int a = 0, int b, int c = 2);
-使用函数时,传递覆盖默认参数的参数时,顺序也是从左到右,不能跳过。
EG: 上文提到的函数使用一个默认参数只有一种形式
- func(1,2) // 即 func(1,2,2)