函数参数的默认值
1.默认参数的规则:
- 参数的默认值必须从右向左提供
- 参数默认值函数调用使用时从左向右匹配
什么意思呢?具体看下面:
//fun1()函数定义
int fun1(int x, int y, int z = 0)
{
return x + y + z;
}
//函数调用
fun1(1 ,2); // x = 1, y = 2, z = 0
fun1(1, 2, 3); // x = 1, y = 2, z = 3
/******************************************************/
//fun2()函数定义
int fun2(int x = 0, int y, int z)
{
return x + y + z;
}
//函数调用
fun(1, 2); // 编译错误,参数类型不匹配,x = 1, y = 2, z没有值
以上两个例子对比就会明白。
2.c++提供函数占位参数
意义:更好的兼容C语言中的不规范的写法
int fun(int x, int)
{
return x;
}
fun(1); // 正确
fun(1, 2); // 正确
int fun(int x, int = 0)
{
return x;
}
fun(1); //正确
fun(2, 3); //正确