zoukankan      html  css  js  c++  java
  • 回调函数

    回调函数是你把函数地址传递过去,然后至于什么时候被调用,你并不需要知道,也不由你去调用。

    #include <stdio.h>
    //#include <iostream>
    //using namespace std;

    typedef void (*CALLBACK)(int a,int b);

    class Example
    {
    private:
        int m;
        int n;
        static CALLBACK func;
        public:
        void register_callback(CALLBACK fun,int k,int j);
        void callcallback();
        void calulate();
        void increase(int start,int stop);
        void decrease(int start,int stop);
    };

    CALLBACK Example::func=NULL;

    void Example::register_callback(CALLBACK fun,int k,int j)
    {
        func=fun;
        m=k;
        n=j;
    }

    void Example::callcallback()
    {
        func(m,n);
    }

    void Example::increase(int start,int stop)
    {
        for(int i= start; i< stop; i++)
            printf("increase i = %d\n", i);    
        
        callcallback();
    }

    void Example::decrease(int start,int stop)
    {
        for(int i= start; i> stop; i--)
            printf("decrease i = %d\n", i);
        
        callcallback();
    }
    void Example::calulate()
    {
        if(m<n)
            increase(m,n);
        else
            decrease(m,n);
    }

    void method_for_call(int a, int b)
    {
        printf("\nsucceed finished the calulate work from %d to %d \n\n",a, b);
    }

    int main(void)
    {
        Example ex;
        ex.register_callback(method_for_call,2,13);
        ex.calulate();
        printf("1------------ 1\n\n");    

        ex.register_callback(method_for_call,23,16);      
        ex.calulate();
        printf("2------------2\n\n");    

    EOF

  • 相关阅读:
    在WinForm中通过C#调用CHM帮助文件
    筹备婚礼之音乐
    挖掘Microsoft Visual Studio 里面的资源之数据库连接配置
    好的Sql语句也能提高效率
    任务安排
    (读书笔记)
    MicroTeam 博客书写注意事项
    泛海精灵的用户分析:补充【Song Xie】
    什么是测试
    [scrum]2010.12.23
  • 原文地址:https://www.cnblogs.com/no7dw/p/2807339.html
Copyright © 2011-2022 走看看