【问题标题】:Default parameters for functions [duplicate]函数的默认参数 [重复]
【发布时间】:2021-11-03 11:41:11
【问题描述】:

假设我在 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 的默认值?

【问题讨论】:

  • 有些库允许命名参数具有您预期的语法或类似的语法。你可能会看那篇文章Named Arguments in C++

标签: c++


【解决方案1】:

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

【讨论】:

  • 看起来很丑。
  • 嗯...至少它不需要调用者记住默认值,因此不容易出错。这非常有用,就像 Python 的 = None 默认参数成语一样。
  • @Raildex Beauty 在旁观者的眼中。你会学会爱上它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 2014-02-10
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多