我想知道这两个函数(fun
和fun2
)之间有什么区别我知道fun2
是函数指针但fun
是什么?这是一样的,因为还有通过指针的函数名吗?
#include <iostream>
void print()
{
std::cout << "print()" << std::endl;
}
void fun(void cast())
{
cast();
}
void fun2(void(*cast)())
{
cast();
}
int main(){
fun(print);
fun2(print);
}
答案 0 :(得分:5)
是否相同,因为还有通过指针的函数名?
是。这是继承自C.它仅仅是为了方便。 fun和fun2都采用了#34; void()&#34;。
类型的指针允许存在这种便利性,因为当您使用括号调用函数时,没有AMBIGUITY。如果您有带括号的参数列表,必须才能调用函数。
如果禁用编译器错误,以下代码也将起作用:
fun4(int* hello) {
hello(); // treat hello as a function pointer because of the ()
}
fun4(&print);