首页 > 编程语言 >函数回调(C++)

函数回调(C++)

时间:2024-03-10 22:57:18浏览次数:29  
标签:函数 自定义 void 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吧。}\)

标签:函数,自定义,void,C++,参数,回调
From: https://www.cnblogs.com/ComputerEngine/p/18065042

相关文章

  • wrf-chem-chem-kpp-kpp2.1-..-gen_kpp.c 文件函数顺序错误(kpp2.1版本),错误文件的路径是
    hereisamistakeinofficialfilegen_kpp.c,theirgen_kpp.c'sfunctiondefinitionorderisreserved!Sowhenyoumakethereisareportoferror:implicitfunction:write_list_to_screen,screen_out,check_all官方很多WRF版本的chem下面的/chem/KPP/util/wkc/gen_......
  • C++单例 singleton的实现
     在这个单例模式的实现中,使用了静态局部变量来确保只有一个实例。 静态局部变量只会在第一次调用函数时初始化,并且在程序的整个生命周期内保持其值不变。这意味着,无论多少次调用getInstance()方法,都只会在第一次调用时创建一个实例,后续的调用会返回同一个实例。 具体来......
  • C语言基础-2、函数的定义与使用
    一、函数的定义和使用函数是一块代码,接受零个或多个参数,做一件事情,并返回零个或一个值函数定义:voidsum(intbegin,inend)//函数头;void:返回类型;sum:函数名,intbegin:参数表{ .......//函数体}1、调用函数函数名(参数值);ex1:#include<stdio.h>voidcheer(){ pr......
  • cache操作函数 --20240310
    Baremetal不讨论多级cache的情况下,裸驱两种关于dcache的操作:flush_dcache_all();//将cache里面的东西刷入内存invalidate_dcache_all();//将数据缓存中的所有内容无效化(invalidate)。该指令一般用于确保缓存中的数据与主内存中的数据同步flush_dcache_all()函数通常在嵌入......
  • printf函数与缓冲区 --20240310
    在linux下,printf输出到控制台经历了app->libc(stdio.h)->syscall->console驱动 下面是<<linux内核完全注释>>一书中的一段描述:继续看下write函数的实现:以下是write()函数的基本定义:#include<unistd.h>ssize_twrite(intfd,constvoid*buf,size_tcount);//ssize_t......
  • Sqlite3之左子串,右子串,中间串subStr函数(14)
    右子串  subStr('一二三四五',-4)selectsubStr('一二三四五',-4) 左子串  substr('一二三四五',1,3) 中串,比如取出三四  selectsubStr('一二三四五',3,2) ......
  • C++ 面试题 1
    C++面试题1.详细说说C/C++中malloc、free和new、delete的异同点在C和C++中,malloc和free以及new和delete是用于动态内存管理的两组函数/操作符。虽然它们的目的相似,但在使用方式和特性上有一些重要的区别。malloc和freemalloc和free是C语言的标准库函数,用于在堆上分配和释放内......
  • 第15章_存储过程与函数
    第15章_存储过程与函数讲师:尚硅谷-宋红康(江湖人称:康师傅)官网:http://www.atguigu.comMySQL从5.0版本开始支持存储过程和函数。存储过程和函数能够将复杂的SQL逻辑封装在一起,应用程序无须关注存储过程和函数内部复杂的SQL逻辑,而只需要简单地调用存储过程和函数即可。1.存储过......
  • 通达信买入翻倍, 年年翻倍的一个指标,没未来函数
    {通达信买入翻倍,年年翻倍的一个指标,没未来函数}买入翻倍,让年年翻倍的一个指标,没未来函数VAR1:=REF(CLOSE,1);VAR2:=SMA(MAX(CLOSE-VAR1,0),6,1)/SMA(ABS(CLOSE-VAR1),6,1)*100;VAR3:=SMA(MAX(CLOSE-VAR1,0),12,1)/SMA(ABS(CLOSE-VAR1),12,1)*100;VAR4:=(BARSLAST(VAR......
  • java中的排序函数
    1.Arrays.sort()函数使用Arrays.sort()对数组进行排序一维数组升序如果是基本数据类型和对应的包装类:使用java.util.Arrays包的Arrays.sort()函数即可。一维数组降序如果是基本数据类型,则要先转成对应的包装类:在Arrays.sort()的第二个参数添加即可Collections.reverseOrder()......