函数指针和回调函数
扫描二维码
随时随地手机看文章
C++很多类库都喜欢用回调函数,MFC中的定时器,消息机制,hook机制等待,包括现在在研究的cocos2d-x中也有很多的回调函数。
1.回调函数
什么是回调函数呢?回调函数其实就是一个通过函数指针调用的函数!假如你把A函数的指针当作参数传给B函数,然后在B函数中通过A函数传进来的这个指针调用A函数,那么这就是回调机制。B函数就是回调函数,而通常情况下,A函数是系统在符合你设定条件的情况下会自动执行,比如Windows下的消息触发等等。那么调用者和被调用者的关系就被拉开了,就像是中断处理函数那样。
2.函数指针
函数指针是一个指针,只是这个指针它不像普通的指针指向是是一个变量,此时它指向的是一个函数,也就是它存储的是一个函数的地址,如果我们愿意的话,可以改变这个它的值,让他由指向funA转变为指向funB,那么这个函数指针的作用就改变了。
3.函数指针的使用
3.1函数指针声明
[cpp] view plaincopy typedef 返回类型(*函数指针类型名)(函参列表);
3.2示例
[cpp] view plaincopy typedef void(*Fun)(int,int); //定义函数指针类型 void min(int a,int b); void max(int a,int b); void min(int a,int b) { int minvalue=a<b?a:b; std::cout<<"min value is "<<minvalue<