假设您有这样的功能:
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)。
答案 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
是否通过对于该参数,如果是,则使用预期的默认值。