美文网首页
回调函数简介

回调函数简介

作者: comma01 | 来源:发表于2017-04-20 16:17 被阅读0次

    C++回调函数相关

    1. 首先还是由最基本的"Hello World!"程序引入

    #include <iostream>
    
    int main()
    {
        std::cout << "Hello World!" << std::endl;
    
        return 0;
    }
    

    2. 接下来实现一个简单的函数调用输出"Hello World!"

    #include <iostream>
    
    void sayHello(string s)
    {
        std::cout << s << std::endl;
    }
    
    int main()
    {
        sayHello("Hello World!");
    
        return 0;
    }
    

    3. 接下来说明一下有关于函数类型这一概念

    所谓的函数的类型,包含了两个部分(它的申明类型和调用所需的形参列表),如对我们上文中的sayHello为例,sayHello函数的类型就为"void (string)"

    有了对函数类型的理解,接着我们就可以申明一个指向函数的指针,以sayHello函数为例:

    void (*fp) (string); // fp为void (string)类型的指针,还未指向相应的对象
    fp = sayHello;
    

    通过调用fp完成输出"Hello World!"代码如下:

    #include <iostream>
    
    void sayHello(string s)
    {
        std::cout << s << std::endl;
    }
    
    int main()
    {
        //void (*fp) (string);  // 声明一个函数指针
        fp = sayHello;
        auto fps = sayHello;    // c++11新用法
    
        fp("Hello ");
        fps("World!");
    
        return 0;
    }
    

    上述代码还是补充了C++11的新特性auto,有兴趣可以自己去了解一下

    4. 下面就可以很容易的理解回调函数的概念了

    所谓回调函数,简单的说就是对于一个现有系统所提供的接口,用户可以自行定义一个函数作为其形参,以函数指针的形式传入,而具体在合适使用该自定义函数由系统接口内部自行决定

    再形象一点地说,你去饭店预订餐桌,留下手机号,你的手机号就是所谓的回调函数,有餐桌则通过手机号与你联系,这就是调用回调函数

    下面给出简单的利用回调函数"Hello World"

    #include <iostream>
    
    void sayHello(string s)
    {
        std::cout << s << std::endl;
    }
    
    void callback(void (*callfunc)(string), string s)
    {
        callfunc(s);
    }
    
    int main()
    {
        auto fps = sayHello;      // c++11新用法
    
        callback(fps, "this is callback func!");
    
        return 0;
    }
    

    这里需要注意的的是,在sayHello函数中是有参数string s需要传入的,callback函数的第一个参数只是一个指向sayHello函数内存地址的函数指针,其并不带参数,如果callback没有第二个参数string s的话,则无法进行调用。

    PS:慢慢开始养成写博客的习惯吧,不然越来越懒了233333

    相关文章

      网友评论

          本文标题:回调函数简介

          本文链接:https://www.haomeiwen.com/subject/kkulzttx.html