回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
#include "stdio.h"
typedef void (*Fun)(char *ch1, char* ch2); //函数指针类型:指向参数为(void *p, char *ch),返回值为void *的函数
//外部宿主函数
void GetCallBack(Fun fun)//这里是用一个外部函数来展示调用方的,此时回调函数fun是在函数里;
//当然也可以定义一个别的类,然后把回调函数传给成员变量.
{
//也可以加一些判断条件
fun("This is ", "fCallBack");//!!!此处是在调用回调函数
}
class A
{
public:
A(){};
~A(){};
static void fCallBack(char *ch1, char *ch2)
{
printf("%s%s\n",ch1, ch2);
}
void Test()
{ //把函数名当做参数,这里相当于设置回调,把回调函数传递给上层.
GetCallBack(fCallBack);//这里fCallBack声明为static,所以此处可以直接使用.
}
};
int main()
{
A a;
a.Test();
return 0;
}
#include "stdio.h"
typedef void (*Fun)(char *ch1, void *p); //函数指针类型:指向参数为(void *p, char *ch),返回值为void *的函数
//外部宿主函数
void GetCallBack(Fun fun, void *p)
{
fun("test", p);
}
class A
{
public:
A(){};
~A(){};
static void fCallBack(char *ch1, void *p)
{
A *pInstance = (A*)p;
printf("%s%s\n",ch1);
}
void Test()
{
GetCallBack(fCallBack, this);//传点别的参数.
}
};
int main()
{
A a;
a.Test();
return 0;
}