为什么在非默认参数之前不允许使用默认参数?

时间:2013-03-06 10:53:33

标签: c++

Probable duplicate

所以这是不允许的

void foo (int a, int b = 10, int c);

但为什么呢?为什么不允许像这样打电话呢?两个连续的彗差表示“使用默认参数”。

foo (20,,30);

除了“这是不允许的,因为这是不允许的”之外还有任何真正的理由吗?“这是不允许的,因为没有人把它交给委员会”?

编辑: 好的,这个怎么样?

void bar (int a, int b, int c = 1, 
          int d = 2, int e = 3, 
          int f = 4, int g = 5, int h = 6);

有效声明,但我想跳过除h之外的所有默认参数。

能够做到这一点不是很好:

bar (20, 30, , , , , , 10);

1 个答案:

答案 0 :(得分:6)

我不知道设计这种语言的人,但我发现f (20,,30);非常难以理解。