C++ 函数指针

//c++中静态方法的函数指针
#include <stdio.h>

class CEventTest
{
public:
    //定义静态方法
    static int handle_input(int fd)
    {
        return fd;
    }
};

//静态方法的函数指针调用
int upcall(int (*callback)(int), int handle)
{
    int result = 0;

    result = callback(handle);

    printf("result is [%d] .\n", result);

    return 0;
}

void test()
{
    int (*cb)(int);         //定义静态方法的函数指针变量cb,不需要指明类名

    //静态方法赋值给函数指针变量
    cb = CEventTest::handle_input;

    //以函数指针方法调用实例方法
    upcall(cb, 2);
}

int main()
{
    test();
    getchar();
    return 0;
}
//c++中实例方法的函数指针
#include <stdio.h>

class CEventTest
{
public:
    //定义实例方法
    int handle_input(int fd)
    {
        return fd;
    }
};

//实例方法的函数指针调用
int upcall(CEventTest *event_handler, int (CEventTest::*callback)(int), int handle)
{
    int result = 0;
    //(event_handler->*callback)
    /*
    (event_handler->*callback):类的实例方法的函数指针使用,()是必须的
    */
    result = (event_handler->*callback)(handle);

    printf("result is [%d] .\n", result);

    return 0;
}

void test()
{
    int (CEventTest::*cb)(int);         //定义实例方法的函数指针变量cb
    //注意:实例方法的函数指针必须是(CEventTest::*cb),不可以只写int (*cb)(int);
    CEventTest *obj = new CEventTest;   //定义CEventTest实体对象

    //实例方法赋值给函数指针变量
    cb = &CEventTest::handle_input;

    //以函数指针方法调用实例方法
    upcall(obj, cb, 2);
}

int main()
{
    test();
    getchar();
    return 0;
}

 

posted on 2018-12-27 21:08  寒魔影  阅读(449)  评论(0编辑  收藏  举报

导航