编写带有可选参数的函数

Writing a function with an optional parameter

本文关键字:参数 函数      更新时间:2023-10-16

所以我有一个带有多个参数的函数,需要根据这些参数执行多个任务。但是当我调用这个函数时,我可能不需要它来执行其中的某些任务。

例如,我的函数有参数(int x,int bin,int value),但有时当我调用它时,我不希望它使用int值计算函数的一部分。我怎样才能做到这一点?我听说过使用可选参数,如果我不指定它,它将参数默认为 0,但这不是我想要的。我想要的是,如果我为"int value"提供一个值,那么我希望我的函数中使用此值的部分进行评估,否则,忽略它。

我建议使用函数重载:

void foo(int x, int bin)  {
  //... 
} 
void foo(int x, int bin, int value) {
  foo(x, bin);
  // extra stuff using value...
}

但您也可以将value设为指针,并使用nullptr来表示不应使用它。

这是另一种选择。在这种情况下,如果仅使用两个参数调用函数value将被初始化为哨兵(在本例中为 -1),并且可以在代码中进行检查。

void foo(int x, int bin, int value=-1)  {
  // x stuff
  // bin stuff
  if (value != -1) {
    // value stuff
  }
} 

这仅在存在一些无效值时才有效,尽管该值可能是 0、-1 或可能是int的最大值。不过,函数重载可能是更好的选择。