回调机制与回调函数

     什么是回调:

       软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用,回调,异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用。 回调是一种双向调用模式,被调用方在接口被调用时也会调用对方的接口。异步调用是一种类似消息工事件的机制,不过它的调用方向刚好相反,接口的服务在收到某件信息或发生某件事件时,会主动通知客户方(即调用客户方的接口). 回调和异步调用的关系非常紧密,通常使用回调来实现异步消息的注册,又通过异步调用来实现消息的通知。

     回调函数,回调对象:

       在过程化语言中,回调通过回调函数来实现。  

            LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM IParam)

            windows下的窗口消息函数就是一回调函数。

       在面向对象的语言中,回调是通过接口或抽象类来实现的。这种接口类称为回调类,回调类的对象称为回调对象。

 

             class  MTest                //接口类(回调类)

             {

               public:

                virtual void fun1()=0;

                virtual void fun2()=0;              

              }

             class B;

             class  A:public MTest     //接口类(回调类)的实现类

            {

             public:

                    MTest()

                      {

                       b=new B(*this);

                      }

                    void fun1()  {};

                    void fun2()  {};

               private:

                    B * b;

 

             }

 

            class  B    //调用回调对象

           {

             public:

                 B(MTest & mTest)

                  {

                  }

                 void Fun1()

                   {

                    ....

                    mTest.fun1();  //回调对象调用回调函数进行回调, 通知A某事情已发生。  调用完后交给B继续执行。   

                    ....              

                   }

             privata:

                  MTest  mTest;

           }

 

           

 

 

      

   

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值