c++的回调函数

一、前言

什么是回调函数?各类语言中都存在回调函数,C语言和C++一系列语言中通过回调机制实现模块化、多态化、不同模块的参数传递。

回调机制,c语言和c++的回调机制主要通过函数指针来实现。

typedef  T(*PFuncCallback)(T1 param1,T2 param2);

二、c语言多态例子

//声明回调类型函数PSayHelloCallback
//@void 为返回来兴
//@name 参数一,表示名字
//@context 上下文,c语言中一般为nullptr
typedef  void(*PSayHelloCallback)(const char * name,void * context);

//定义一个函数指针实体
PSayHelloCallback phelloCallback;

void SayHelloEnglish(const char* name,void * context) {

    printf("Hello,I'm %s.\n",name);
}

void SayHelloChinese(const char* name, void * context) {

    printf("你好,我是%s。\n", name);
}

void RegistCallFunc(PSayHelloCallback phello) {

        phelloCallback = phello;

调用

    RegistCallFunc(SayHelloEnglish); //通过函数指针,把所需的函数传入,通过一个全局指针实现,可以实现c语言的多态,根据需要调用
    phelloCallback("lilei",nullptr);

    RegistCallFunc(SayHelloChinese);
    phelloCallback("李雷", nullptr);

三、C语言传参的例子

///传值例子

//库提供方的函数指针
typedef void(pOutputCallback)(int ra);

//库提供方提供的函数
void PrintINT(pOutputCallback pOut) {
    pOut(5);
}


void Output(int ra) {
    printf("数字是%d\n",ra);
}

主函数中
    PrintINT(Output); //通过函数指针把外部定义的函数,传入调用方供调用方调用,所以称回调,函数外部定义解析,这样就可以实现接收库提供的数据

猜你喜欢

转载自www.cnblogs.com/xietianjiao/p/12890194.html