C++ 如何为作为函数的函数参数指定默认值?C++;

C++ 如何为作为函数的函数参数指定默认值?C++;,c++,function,parameter-passing,C++,Function,Parameter Passing,假设你有这样一个函数: int Function(int a = 5, int b = 10){ ... } 如果使用较少的参数调用同一函数,则该函数应具有以下参数,例如: int var = Function(8); “a”变为8,“b”得到默认值10 考虑到这一点,假设我有另一个名为Function3的函数,它接收另一个函数作为其参数: int Function3(int x, int Function2 (int)){ ... int m = Funct

假设你有这样一个函数:

int Function(int a = 5, int b = 10){
...
}
如果使用较少的参数调用同一函数,则该函数应具有以下参数,例如:

int var = Function(8);
“a”变为8,“b”得到默认值10

考虑到这一点,假设我有另一个名为Function3的函数,它接收另一个函数作为其参数:

    int Function3(int x, int Function2 (int)){
        ...
    int m = Function2(x);
        ...
    return m;
    }
如果我没有将任何函数作为参数发送给Function3(使用lambda函数),如何设置应该调用的默认函数(function2)

因此,如果我这样做:

int ver = Function3(y);
与此相反:

int ver = Function3(y,std::sin)

例如,如果第三个参数没有发送任何内容,我如何告诉它将数字乘以3?(如果它必须使用该函数来处理x和y)。

我这样做的方式是,我将默认值设置为
NULL
,然后在函数的实现中,我从一个
if
语句开始,该语句检查该参数是否传递了
NULL
,如果传递了,改为使用预期的默认值。

您的参数应该是指向函数的指针,您可以像分配任何其他参数一样分配它

int Function3(int a, int b, int (*func)(int,int) = Function2)    
{
  func(a,b); //call will use passed function, or Function2 if one wasn't provided
}

为什么要重新发明轮子并在程序中引入一个分支?@BoundaryPopulation好吧,我不知道OP的问题可以简单地解决,我认为OP的困难在于他想要传递的默认值不在范围内,或者在其他方面不可用,在进行调用的某些地方。调用站点的范围与默认参数无关
std::sin
不是
int(int)
函数。