程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> c++回調之應用函數指針示例

c++回調之應用函數指針示例

編輯:關於C++

c++回調之應用函數指針示例。本站提示廣大學習愛好者:(c++回調之應用函數指針示例)文章只能為提供參考,不一定能成為您想要的結果。以下是c++回調之應用函數指針示例正文


c++回調之應用函數指針示例


#include <iostream>
using namespace std;


/************************************************************************/
/*                基層完成: CALLBACK                                        */
/************************************************************************/

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

class base
{
private:
    int m;
    int n;
    static CALLBACKFUN pfunc;
public:
    base():m(0), n(0){};
    void registercallback(CALLBACKFUN fun,int k,int j);
    void callcallback();
};

CALLBACKFUN base::pfunc=NULL;    /* static初始化 */

// 注冊回調函數
void base::registercallback(CALLBACKFUN fun,int k,int j)
{
    pfunc=fun;
    m=k;
    n=j;
}

void base::callcallback()
{
    base::pfunc(m,n);
}

基層界說回調函數的時刻,須要供給以下幾個接口:

1. 完成注冊接口:供給一個接口給下層,經由過程該接口,下層注冊回調完成接口,基層將該完成接口地址傳遞給界說的回調指針(CALLBACKFUN),該初始化舉措是必需的,不然沒法完成回調;

2. 觸發接口:該接口供給觸刊行為,當挪用該接口時,就會觸發一次函數回調;


// cbByfunction.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "cbByfunction.h"

/************************************************************************/
/*                    下層回調注冊                                        */
/************************************************************************/
void seiya(int a,int b)
{
    cout << "..." << a << "..." << b << endl;
    cout << "this is seiya callback function" <<endl;
}

void zilong(int a,int b)
{
    cout<<a<<endl<<b<<endl;
    cout<<"this is zilong callback function"<<endl;
}

int main(int argc, char* argv[])
{
    // 注冊基層回調函數
    base c_base;
    c_base.registercallback(seiya, 5, 6);
    c_base.callcallback();
    c_base.registercallback(zilong, 7, 8);
    c_base.callcallback();
    return 0;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved