假设我在c++中有一个类似下面的函数,
int sum(int x = 0, int y = 0) {
return x + y;
}我可以通过调用像sum(3)这样的函数来使用默认值y,然后返回3。是否可以使用默认值x,而不是y?我知道我可以像sum(0,4)一样显式地调用带有默认值x的函数,但是有没有办法调用像sum(y = 4)这样的函数,然后使用默认值x呢?
发布于 2021-11-03 11:43:36
不,没有办法。一种可能的解决方法是使用std::optional
int sum(std::optional<int> x = {}, std::optional<int> y = {}) {
return x.value_or(0) + y.value_or(0);
}然后您可以使用{}或std::nullopt来使用默认值:sum({}, 4)。
请注意,如果将{}传递给int参数(而不是std::optional<int>),则无论默认参数是什么,它都将始终传递零。
https://stackoverflow.com/questions/69824226
复制相似问题