函数回调(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吧。}\)

posted @ 2024-03-10 22:44  ComputerEngine  阅读(17)  评论(0编辑  收藏  举报