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;
    }
  • 相关阅读:
    Atitit  atiMail atiDns新特性 v2  q39
    Atitit.java jar hell解决方案Djava.ext.dirs in ide envi..
    砍价大法
    DWR学习
    什么是WEB 2.0
    XHTML 1.0 Tags 参考
    web.config文件遇到的错误
    JDBC教程之PreparedStatement
    符合W3C标准的target=_blank形式
    dwr 登录实现 (入门知识)
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/10187379.html
Copyright © 2011-2022 走看看