码迷,mamicode.com
首页 > 编程语言 > 详细

C++基础--回调的应用

时间:2018-06-06 22:18:09      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:TE   静态   .com   amp   type   成员   oid   com   IV   

一、类成员函数的回调

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++基础--回调的应用

标签:TE   静态   .com   amp   type   成员   oid   com   IV   

原文地址:https://www.cnblogs.com/anlia/p/9146125.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!