gpt4 book ai didi

c++ - 带取消引用和不带取消引用的函数有什么区别

转载 作者:太空狗 更新时间:2023-10-29 20:57:56 26 4
gpt4 key购买 nike

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

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

最佳答案

What's the difference between f1, (*f1), f2, (*f2) ?

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

and what's the difference between (function) and (&function) ?

function 是一个函数。 &function 是指向函数的指针。这里有一个极其微小的区别,即您可以将函数引用绑定(bind)到函数,但不能绑定(bind)到函数指针。

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

再次,请查看链接的问题,了解您可能使用函数引用的可能原因(数量不多)。

关于c++ - 带取消引用和不带取消引用的函数有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28904688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com