假设我在 C++ 中有一个如下所示的函数,
int sum(int x = 0, int y = 0) {
return x + y;
}
Run Code Online (Sandbox Code Playgroud)
我可以通过调用函数来使用 y 的默认值,sum(3)然后返回 3。是否可以使用 x 的默认值,而不是 y?我知道我可以像这样显式地使用 x 的默认值调用该函数sum(0,4),但是有没有一种方法可以像sum(y = 4)这样使用 x 的默认值来调用该函数?
不,没有办法。一个可能的解决方法是使用std::optional:
int sum(std::optional<int> x = {}, std::optional<int> y = {}) {
return x.value_or(0) + y.value_or(0);
}
Run Code Online (Sandbox Code Playgroud)
然后您可以使用{}或std::nullopt使用默认值:sum({}, 4)。
请注意,如果您传递{}给int参数(而不是std::optional<int>),则无论默认参数是什么,它都将始终传递零。
| 归档时间: |
|
| 查看次数: |
227 次 |
| 最近记录: |