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

  • 相关阅读:
    ubuntu基本配置学习(1)
    UITabBarController使用详解
    Could not find a storyboard named 'Main' in bundle NSBundle </Users/tianxiao/
    检查更新功能
    SDWebImage手动清除缓存的方法
    错误记录1
    如何获取path路径
    iOS如何获得本地Documents下的文件夹名称或文件名称
    重头系统的学习,不会咱就学!2014.6.18
    错误1
  • 原文地址:https://www.cnblogs.com/no7dw/p/2807339.html
Copyright © 2011-2022 走看看