You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:33:21