1. 程式人生 > >C++基礎--回調的應用

C++基礎--回調的應用

oid 應用 lB image all 文件 ima TP llb

一、類成員函數的回調

1. 類成員函數的回調,函數的調用必須通過類來調用;

CallBack.h

#pragma once

class CallBack
{
public:
	CallBack();
	~CallBack();
	typedef void (CallBack::*pFunc)(int);
	void printFunc(int x);
	void FuncCall(CallBack *obj, CallBack::pFunc p);
};

  CallBack.cpp

#include "CallBack.h"
#include <stdio.h>

CallBack::CallBack()
{
}

CallBack::
~CallBack() { } void CallBack::printFunc(int x) { printf("CALLBACK x value is %d\n", x); } void CallBack::FuncCall(CallBack *obj, CallBack::pFunc p) { int x = 5; (obj->*p)(x); }

main.cpp

#include "CallBack.h"

int main()
{
    CallBack *cb = new CallBack();
    cb->FuncCall(cb, &CallBack::printFunc);
    
    
return 0; }

運行結果為:

技術分享圖片

二、靜態函數的回調

註意:1. 靜態函數只能在聲明這個函數的文件中調用;

CallBack.h

#pragma once

typedef void(*pFunc)(int);
static void printFunc(int x);
void FuncCall(pFunc p, int x);
void excute(int x);

CallBack.cpp

#include "CallBack.h"
#include <stdio.h>

static void printFunc(int x)
{
    printf("CALLBACK x value is %d\n
", x); } void FuncCall(pFunc p, int x) { (*p)(x); } void excute(int x) { FuncCall(printFunc, x); }

main.cpp

#include "CallBack.h"

int main()
{
    int x = 5;
    excute(x);
    return 0;
}

運行結果為:

技術分享圖片

C++基礎--回調的應用