C++如何实现带可选参数的函数 调用时可省略末尾指定参数
问题解答
可以实现,你可以使用C++的默认参数特性满足这个需求。
实现方案
在函数声明阶段给参数z指定一个默认值即可,示例声明如下:
void example(int x, int y, int z = 0); // 等号右侧的0可以替换为你业务需要的任意默认值
配置完成后,你既可以用example(34, 21);的形式调用(此时z自动使用预设的默认值),也可以主动传入第三个参数example(34, 21, 10);覆盖默认值。
注意事项
- 默认参数必须放在参数列表的最右侧:所有带默认值的参数都要排在无默认值参数的后面,否则编译器会报错。
- 如果你的函数分为声明和实现两部分,默认值只能写在声明中,不能在实现部分重复添加默认值,否则会触发编译错误。
替代方案:函数重载
如果你需要区分用户是否主动传入了z参数,或者默认值的逻辑比较复杂,也可以用函数重载实现:
// 两个参数的重载版本 void example(int x, int y) { // 内部可以自定义默认逻辑,比如调用三个参数的版本 example(x, y, 0); } // 三个参数的原始版本 void example(int x, int y, int z) { // 实际业务逻辑 }
内容的提问来源于stack exchange,提问作者xfajk X
相关产品推荐
相关产品推荐

