1

C++ 问题:假设有一个具有以下原型的函数: void f(int=10, int=20, int=30,int=40) 如果通过传递 2 个参数来调用该函数,我们如何确定这些参数被视为第一个和第三个,而第二个和第四个被视为默认值。

我有一个使用函数重载解决这个问题的想法,但我想知道是否有任何直接的方法可以解决这个问题?我正在寻找与 c++ 相关的答案

4

1 回答 1

2

重载的解决方案如下所示:

void f(int a, int b, int c, int d=40)
{
  // ...
}

void f(int a=10, int c=30)
{
  f(a,20,c);
}

我认为任何其他解决方案/解决方法都不会更容易。有一些库可以提供命名参数,但它们会改变调用函数的方式,并且至少会给编译器带来相当多的开销,如果不是生成的代码本身的话。

于 2013-10-05T08:13:28.583 回答