当前位置:C++技术网 > 资讯 > 简单的介绍回调函数原理和使用

简单的介绍回调函数原理和使用

更新时间:2015-06-27 18:14:34浏览次数:1+次

    有很多人在看到Boost代码的时候,会感觉很头大,为什么呢?因为我们经常看到

type_name  function_name (void (*function) (para_list...),para_list...) 

    这样的东西。有一次看到一个大神写的函数:

void calc (void (*pFun) (int ,int ),int ,int ) 

    我就不太明白这个是什么东西,后来查了一下知道了这就是回调函数。这个东西形状挺吓人的,但是实际上没有什么吓人的。

例如:

#include<iostream>
 using namespace std;

 void fun1 (int a,int b)
 {
     cout <<"This is fun1..   a + b = " <<a + b<<end;; 
 }

 void fun2 (int a,int b)
 {
     cout <<"This is fun2..   a + b"<<a + b <<endl;
 }

void fun (void (*f) (int ,int ),int a,int b) // void (*f)(int,int )的作用是声明一个函数,
//注意 (*f)这个括号不可以省略!!
{ 

     //就像声明一个变量那样。调用的时候传来函数名
    f (a,b);
 }

 int main()
 {    
     //好处实现一个函数可以调用不同的函数,实现一种
    //动态的调用,提高函数的复用率,减少设计的复杂性
    //因为在程序要修改的时候只需要修改传入的函数(被调用者,本例中的fun1()或者fun2())就可以,
    //不需要修改调用者(本例中的fun ())本身
    fun (fun1,1,2);
     fun (fun2,3,4);//因为fun2没有参数,为了保持函数正确,传入0
    return 0;
 }

    这就是我对回调函数的理解。