gpt4 book ai didi

c++ - 为什么 (*callback)() 有效,而 *callback() 或 *callback 在 C++ 中不起作用

转载 作者:行者123 更新时间:2023-12-03 00:21:57 26 4
gpt4 key购买 nike

我是一名 C++ 初学者,我认为要真正学习指针和引用,我应该尝试创建一个回调函数,这是我在 JavaScript 中认为理所当然的事情。

但是,对于我的一生,我不知道为什么这些括号在 (*callback)() 中如此重要,如果有人可以向我解释它,我会很高兴。

这是我编写的一些代码,它以某种方式工作:

#include<cstdio>

void function_two()
{
printf("then this runs!");
}

void function_one(void (*callback)() = nullptr)
{
printf("this runs first");
if(callback != nullptr)
{
(*callback)();
}
}

int main()
{
function_one(&function_two);
}

最佳答案

事实上你可以直接写

callback();

如果您使用一元解引用运算符 *,那么它相对于后缀函数调用运算符具有较低的优先级。所以你必须写

(*callback)();

否则这样的调用

*callback();

编译器认为取消引用函数调用的结果。

请记住,您甚至可以编写如下内容

(******callback)();

因为结果函数指示符被转换回函数指针。

关于c++ - 为什么 (*callback)() 有效,而 *callback() 或 *callback 在 C++ 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60495721/

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