我们如何确保传递的 2 个参数被视为第一个和第三个,而第二个 AD 第四个被视为默认值

how can we make sure 2 arguments passed are treated as first and third, whereas, the second ad the fourth are taken as defaults

本文关键字:三个 第二个 AD 默认值 四个 确保 参数 我们 第一个 何确保      更新时间:2023-10-16

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

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

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

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

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

相关文章: