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

Mar*_*lus 0 c++ syntax

例如:

void DoSome(int a = 10, int b = 10 ) {
    std::cout << a + b << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

作品.但

void DoSome(int a = 10, int b ) {
  std::cout << a + b << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

将不会.

Ker*_* SB 6

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

void foo(int = 10, int, int = 20);
Run Code Online (Sandbox Code Playgroud)

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