int g()
{
return 0;
}
int f1(int(fn)())
{
return fn();
}
int f2(int(*fn)())
{
return fn();
}
int main()
{
f1(g);
f2(g);
}
上面的代码可以成功编译。
我只是想知道:
int f(int(fn)())
和int f(int(*fn)())
之间有什么区别?
为什么它们在C ++中都是合法的?
答案 0 :(得分:4)
int f(int(fn)())
和int f(int(*fn)())
是一回事。函数将函数指针作为参数。
当我们将函数名称作为参数传递时,函数名称会自动转换为指针。所以
int f(int(fn)()) {}
int f(int(*fn)()) {} // redefinition error