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

C++ 函数指针

时间:2018-12-27 21:25:25      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:result   back   new   方法调用   ati   ret   clu   col   obj   

//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;
}

 

C++ 函数指针

标签:result   back   new   方法调用   ati   ret   clu   col   obj   

原文地址:https://www.cnblogs.com/zhanggaofeng/p/10187379.html

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