函数回调(C++)
函数回调
C++部分
从C#逆向理解回去,这玩意应该就是delegate
的原型了,只不过C#中将其作为一个单独的变量类型方便做管理,而C++这个老毕登这里则是以指针的形式表现出来。
作用在于,你不需要关心函数具体内容是什么,也不需要关心函数到底会处理什么,你只需要直接调用这个定义了的回调函数,然后他就会自己干活。在外部,你再写出每一个不同处理过程的函数,然后塞给他。也就是说,回调函数是为了程序的可拓展性而存在的。如果这部分没看明白,往下看样例代码就知道了
所定义的形式是:void [函数名]( (*[回调函数名])(参数) )
,举例:void func( (*pointerFunction)() )
,如果要接受多个参数,那么必须重新定义新的重载,以下解释由Bing AI给出:
然而,你需要为每一个接受不同参数的函数定义一个新的 callback 函数。这是因为在 C++ 中,函数的参数数量和类型是函数签名的一部分,所以接受不同参数的函数会被视为不同的函数。
啥比C++(恼
在OI竞赛里,C++选手总会掏出他闪闪发光的STL,然后骄傲的从里面拿出一个叫做sort
的函数,而sort
函数的第三个传参就是一个回调函数。我们自定义一个bool
返回类型的函数,这样就可以进行自定义排序规则,想了想,这应该就是平时见的最多的回调函数了。
高贵C++(笑
以下是回调函数的一个展示代码:
#include<iostream> using namespace std; void fst(){ cout<<1<<endl; } void sec(){ cout<<2<<endl; } void trd(){ cout<<3<<endl; } void callback(void(*p)()){ (*p)(); } int main() { callback(fst); callback(sec); callback(trd); return 0; }
以上代码会输出以下结果:
1 2 3
Unity部分
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署