为什么具有单个参数值的函数必须具有为每个参数指定的默认值?

时间:2014-08-23 12:00:33

标签: c++ syntax

例如:

void DoSome(int a = 10, int b = 10 ) {
    std::cout << a + b << std::endl;
}

的工作原理。但

void DoSome(int a = 10, int b ) {
  std::cout << a + b << std::endl;
}

不会。

1 个答案:

答案 0 :(得分:6)

您的特定示例可能有效,但请考虑更常见的情况:

void foo(int = 10, int, int = 20);

现在foo(1, 2)是什么意思?它可以是foo(10, 1, 2)foo(1, 2, 20)。这是令人困惑的,并且与确定实际论点的大量精神负担相比,允许这样做几乎不会增加便利性。