zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    【原】基础篇:第九篇,Ext组件系列之field组件的基本用法
    为什么要返回byte[]
    Migrate Mysql to SQL Server 2005
    关于编码规范
    RPM删除包的时候报127错误
    邮政储蓄的线上故障
    string.replaceAll与StringUtils.replace
    EJB工作原理
    OJB Connection
    找工作
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/10187379.html
Copyright © 2011-2022 走看看