功能与解除引用和没有解除引用之间的区别是什么

时间:2015-03-06 17:52:21

标签: c++ pointers c++11 dereference

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;
}

1 个答案:

答案 0 :(得分:4)

  

f1,(* f1),f2,(* f2)之间有什么区别?

f1f2是函数指针。 (*f1)(*f2)是对函数的引用。函数指针和函数引用之间有什么区别?极少,因为它们都可以用完全相同的语法调用。但是,请参阅this question以获得有关函数引用的更深入的解释。

  

和(功能)和(和功能)有什么区别?

function是一个功能。 &function是指向函数的指针。这里有一个非常小的区别,你可以将函数引用绑定到函数,但不能绑定到函数指针。

void (&fref1)(char*) = function; // compiles
void (&fref2)(char*) = &function; // does not compile

同样,请查看链接的问题,以了解可能使用函数引用的原因(没有多少)。