C#非末尾默认值函数调用:如何指定参数使用默认值?
如何在不修改函数的情况下,只为第二个参数赋值并保留第一个参数的默认值?
嘿,这个场景我太熟悉了!刚好能给你分享几个实用的解决方案,毕竟C++在处理这种“跳过前面默认参数只传后面的”需求上,确实有几种不同的玩法:
1. 最直接的:显式传入第一个参数的默认值
既然原函数里a的默认值是0,那直接把这个值写进去就完事了,效果和用默认值完全一样:
func(0, 10);
这种写法简单粗暴,而且代码可读性拉满,团队里的人一眼就懂你要干嘛,也是日常开发里最常用的方案。
2. 封装个小包装函数(适合多次调用的场景)
如果你需要频繁这么调用,不想每次都写0,可以自己套一层简单的包装函数:
void func_set_b(int b_val) { func(0, b_val); // 这里固定用a的默认值,只传b的新值 }
之后直接调用func_set_b(10)就行,省得每次重复写默认值,也能避免手滑写错数字。
3. C++20及以上:用原生命名参数(最优雅的方案)
如果你的项目已经升级到C++20或者更高版本,那恭喜你,标准直接支持命名参数了!你可以直接指定参数名来赋值,完全不用管前面的参数:
func(b = 10);
这种写法完美贴合你的需求,代码简洁又直观,简直是为这种场景量身定做的——不过前提是编译器得支持C++20哦。
总结一下:如果是老项目或者编译器版本低,选第一种方案准没错;如果要多次调用,包装函数更省心;要是能用上C++20,命名参数绝对是最优解。
内容的提问来源于stack exchange,提问作者BaasBartMans
相关产品推荐
相关产品推荐

