C++基礎--回調的應用
阿新 • • 發佈:2018-06-06
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++基礎--回調的應用