• 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] .
    ", 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] .
    ", 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;
    }
  • 相关阅读:
    Java CompletableFuture:allOf等待所有异步线程任务结束
    多线程分批处理数据
    ListSplitUtil (批量数据处理)
    mysql性能优化相关
    JsonUtil
    批量数据数据处理
    多集合取交集公用方法
    ALSA:Linux下声卡编程
    word
    安卓使用自己导入的db3数据库文件
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/10187379.html
Copyright © 2020-2023  润新知