您的位置:首页 > 编程语言 > C语言/C++

C++函数形参默认值误区

2018-03-22 13:51 288 查看
在写C++代码时,用到形参默认值的时候必须要注意两个要点:

一、有默认值形参必须放在形参列表的末尾

例如:

int fa(int x, int y = 5, int z = 5); //正确
int fb(int x = 5, int y = 5, int z); //错误
int fc(int x = 5, int y, int z = 5); //错误


之所以要将有默认值的形参必须放在形参列表的末尾,是因为不这样做的话在调用函数时就不能跳过有默认值的形参给其他形参赋值。

例如:

//假设有
int f(int a = 5, int b, int c = 10, int d){...}

//调用函数f()
f(2, 4);
//试图给b, d赋值,实际上却是给a, b赋值


二、不允许多次声明有默认值形参

在同一个作用域内,不允许在同一个函数的多个声明中对同一个参数的默认值重复定义,即使前后定义的值相同也不行。

一般来说,有两种设置默认值形参的方法:

1、在定义时设置(函数定义时默认声明函数);

2、在声明时设置;

选择了以上两种方式中的任意一种,即不可以再使用另一种。

例如:

//方式一:
int add(int x = 5, int y = 10);
int add(int x, int y){...}

//方式二:
int add(int x, int y);
int add(int x = 5, int y = 10){...}


当工程很大时,不允许多次声明有默认值形参可能会在观察代码时产生一些混乱,这时可以注释来说明形参:

int add(int x = 5, int y = 10);
int add(int x /* =5 */, int y /* =10 */){...}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ 形参 默认值