f1,(* f1),f2,(* f2)之间有什么区别? 和(功能)和(&功能)有什么区别?
#include <iostream>
using namespace std;
void function (char *s) {
cout << s << endl;
}
int main () {
void (*f1) (char*) = &function;
void (*f2) (char*) = function;
f1 ("f1 function without dereference.");
(*f1) ("f1 function with dereference.");
f2 ("f2 function without dereference.");
(*f2) ("f2 function with dereference.");
return 0;
}
答案 0 :(得分:4)
f1,(* f1),f2,(* f2)之间有什么区别?
f1
和f2
是函数指针。 (*f1)
和(*f2)
是对函数的引用。函数指针和函数引用之间有什么区别?极少,因为它们都可以用完全相同的语法调用。但是,请参阅this question以获得有关函数引用的更深入的解释。
和(功能)和(和功能)有什么区别?
function
是一个功能。 &function
是指向函数的指针。这里有一个非常小的区别,你可以将函数引用绑定到函数,但不能绑定到函数指针。
void (&fref1)(char*) = function; // compiles
void (&fref2)(char*) = &function; // does not compile
同样,请查看链接的问题,以了解可能使用函数引用的原因(没有多少)。