gpt4 book ai didi

c++ - 函数指针 - 为什么,什么时候我可以不用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:37 25 4
gpt4 key购买 nike

免责声明:我已经阅读了无数关于该主题的其他文章,但我仍然不明白。示例:为什么这样做:

void func(int a, void (*callback)(int))
{
/* do something with a and callback */
callback(3);
}

void pointme(int b)
{
/* do something with b */
}

int main()
{
void (*pf)(int);
pf = &pointme;
func(10, pf);
}

当我可以简单地做到这一点时:

void func(int a)
{
pointme(3);
/* do something with a*/
}

void pointme(int b)
{
/* do something with b */
}

int main()
{
func(10);
}

???我真的不明白。任何帮助将不胜感激。谢谢!!!

最佳答案

when I can simply do this [...]

没错,如果可以的话,你应该直接调用函数。但是,有些情况下您无法直接调用,因为您尝试调用的函数在您的 代码中不存在。当然,该功能将存在于完成的程序中,但在许多情况下,您会开发一个与其他人的代码交互的库,并且需要自行编译。

此外,还有一些情况是你可以直接调用函数,但你不想这样做,以避免代码重复。

这就是函数指针派上用场的时候了:调用者可以告诉你的函数调用他的函数。

考虑设计一个线程库,让用户可以并行运行他们的函数。该库不能直接引用用户代码,原因有二:

  • 您的代码不知道用户将同时运行哪些功能,并且
  • 您不想为用户可能决定传递给您的库的每种函数编写单独的函数。

关于c++ - 函数指针 - 为什么,什么时候我可以不用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35853192/

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