前段时间我发现可以编写一个带有函数类型参数的C ++函数(不是函数指针类型!)。例如,这是一个函数,它接受一个接受并返回double的回调函数:
void MyFunction(double function(double));
我的问题是拥有函数类型的变量意味着什么,因为你不能在任何其他上下文中声明一个。从语义上讲,它与函数指针或函数引用有什么不同?我应该注意函数指针和函数类型变量之间是否存在重要区别?
答案 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
,“