在C ++中传递函数类型的参数是什么意思?

时间:2011-03-18 19:07:04

标签: c++ function types arguments

前段时间我发现可以编写一个带有函数类型参数的C ++函数(不是函数指针类型!)。例如,这是一个函数,它接受一个接受并返回double的回调函数:

void MyFunction(double function(double));

我的问题是拥有函数类型的变量意味着什么,因为你不能在任何其他上下文中声明一个。从语义上讲,它与函数指针或函数引用有什么不同?我应该注意函数指针和函数类型变量之间是否存在重要区别?

1 个答案:

答案 0 :(得分:13)

就像void f(int x[])void f(int* x)相同,以下两个相同:

void MyFunction(double function(double)); 
void MyFunction(double (*function)(double)); 

或者,在官方语言(C ++ 03 8.3.5 / 3)中,确定函数的类型时,

  

在确定每个参数的类型后,将“T数组”或“函数返回T”的任何参数调整为“指向T”或“指针”分别用于返回T,“