Damn bro what the heck browser ya using I can't understand

函数回调(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部分

delegate

posted @   ComputerEngine  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示