重明鸟软件知识平台
@C/C++指针函数和回调函数
函数指针和回调函数是C/C++中非常有用的一种方法。特别是在一些大系统设计时用的比较多。像DirectX和OpenGL等这些图形库都有他们的影子。

函数指针和回调函数形式上有些相似,都是对函数的地址指针进行控制。具体使用方法我们来看两个例子。
函数指针:指向函数地址的指针。可以方便在同参数多个函数间切换。

回调函数:函数是你实现的,但由别人的函数在运行时通过参数传递的方式调用,这就是所谓的回调函数。简单来说,就是由别人的函数运行期间来回调你实现的函数。
一、函数指针例子
#include <iostream>
using namespace std;

class First
{
private:
    void (*fun01)();
    void (*fun02)(int,int);

public:
    void add_fun(void (*fun)())
    {
        fun01 = fun;
    }

    void add_fun(void (*fun)(int,int))
    {
        fun02 = fun;
    }

    void process()
    {
        (*fun01)();
        (*fun02)(1,2);
    }
};

void myfun1()
{
    cout<<"hi,call me"<<endl;
}

void myfun2(int a,int b)
{
    cout<<a+b<<endl;
}

int main()
{
    First m_first;
    m_first.add_fun(myfun1);
    m_first.add_fun(myfun2);
    m_first.process();
    return 0;
}


二、回调函数例子
#include <iostream>
using namespace std;

//定义回调函数
void show_text()
{
    cout<<"Hello World!"<<endl;
}

int show_add(int a,int b)
{
    return a+b;
}

//定义实现回调函数的"调用函数"
void CallShowText(void (*callfuct)())
{
    callfuct();
}

void CallAddFun(int (*callfuct)(int,int),int a,int b)
{
    cout<<callfuct(a,b)<<endl;
}

//在main函数中实现函数回调
int main()
{
    CallShowText(show_text);
    CallAddFun(show_add,1,2);
    return 0;
}


@站内查找
@栏目文章
【基础教程】Python守护进程创建
【基础教程】PyGame(13):三维环境设置
【基础教程】C/C++指针函数和回调函数
【基础教程】C/C++多进程编程(3)
【基础教程】C/C++多进程编程(2)
【基础教程】C/C++多进程编程(1)
【基础教程】C/C++多线程编程(2)
【基础教程】C/C++多线程编程(1)
【基础教程】C/C++动态库编程
【基础教程】C/C++静态库编程
【基础教程】photoshop图片混合公式
【基础教程】PyGame(12):旋转和缩放
【基础教程】PyGame(11):Surface操作
【基础教程】网络编程:Epoll(2)
【基础教程】网络编程:Epoll(1)
【基础教程】网络编程:IOCP(3)
【基础教程】网络编程:IOCP(2)
【基础教程】网络编程:IOCP(1)
【基础教程】网络编程:UDP
【基础教程】网络编程:TCP
【基础教程】Ubuntu安装Hadoop(4)
【基础教程】Ubuntu安装Hadoop(3)
【基础教程】Ubuntu安装Hadoop(2)
【基础教程】Ubuntu安装Hadoop(1)
【基础教程】Hadoop技术原理
【基础教程】Hadoop基本命令
【基础教程】Hadoop是什么东西
【基础教程】排序算法介绍
【基础教程】PyGame(10):声音控制
【基础教程】PyGame(9):鼠标事件(2)
【基础教程】PyGame(8):鼠标事件(1)
【基础教程】PyGame(7):键盘事件(2)
【基础教程】PyGame(6):键盘事件(1)
【基础教程】PyGame(5):显示图片
【基础教程】PyGame(4):显示文字
【基础教程】PyGame(3):图元绘制
【基础教程】PyGame(2):游戏框架
【基础教程】PyGame(1):开发环境搭建
【基础教程】Python(10):类定义
【基础教程】Python(9):自定义模块
【基础教程】Python(8):输入输出控制
【基础教程】Python(7):函数定义
【基础教程】Python(6):中断语句
【基础教程】Python(5):判断语句
【基础教程】Python(4):循环语句
【基础教程】Python(3):变量与运算符
【基础教程】Python(2):Hello
【基础教程】Python(1):介绍与安装
Copyright @ 2011-2018 by szc  桂ICP备11003301号-1  桂公网安备45040302000027号  Email:szcsoft@qq.com