函数回调(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部分
\(\huge{去用delegate吧。}\)