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

时间:2017-04-22 23:21:52

标签: 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 = Function2(x);
        ...
    return m;
    }

如果我没有将任何函数作为参数发送到Function3(使用lambda函数),如何设置应该调用的默认函数(function2)?

所以,如果我这样做:

int ver = Function3(y);

而不是:

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

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

2 个答案:

答案 0 :(得分:4)

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

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
}

答案 1 :(得分:2)

我这样做的方法是将默认值设为NULL,然后在函数的实现中,我以if语句开头,检查NULL是否通过对于该参数,如果是,则使用预期的默认值。