函数的默认参数

spi*_*123 0 c++

假设我在 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 的默认值来调用该函数?

Hol*_*Cat 5

不,没有办法。一个可能的解决方法是使用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>),则无论默认参数是什么,它都将始终传递零。

  • @Raildex 情人眼里出西施。你会学会爱上它。 (3认同)