zoukankan      html  css  js  c++  java
  • C++ 11: function & bind 使用示例

    #include <functional>
    
    #include <iostream>
    
     
    
    struct Foo {
    
        Foo(int num) : num_(num) {}
    
        void print_add(int i) const { std::cout << num_+i << '
    '; }
    
        int num_;
    
    };
    
     
    
    void print_num(int i)
    
    {
    
        std::cout << i << '
    ';
    
    }
    
     
    
    struct PrintNum {
    
        void operator()(int i) const
    
        {
    
            std::cout << i << '
    ';
    
        }
    
    };
    
     
    
    int main()
    
    {
    
        // store a free function
    
        std::function<void(int)> f_display = print_num;
    
        f_display(-9);
    
     
    
        // store a lambda
    
        std::function<void()> f_display_42 = []() { print_num(42); };
    
        f_display_42();
    
     
    
        // store the result of a call to std::bind
    
        std::function<void()> f_display_31337 = std::bind(print_num, 31337);
    
        f_display_31337();
    
     
    
        // store a call to a member function
    
        std::function<void(const Foo&, int)> f_add_display = &Foo::print_add;
    
        const Foo foo(314159);
    
        f_add_display(foo, 1);
    
     
    
        // store a call to a member function and object
    
        using std::placeholders::_1;
    
        std::function<void(int)> f_add_display2= std::bind( &Foo::print_add, foo, _1 );
    
        f_add_display2(2);
    
     
    
        // store a call to a function object
    
        std::function<void(int)> f_display_obj = PrintNum();
    
        f_display_obj(18);
    
    }
  • 相关阅读:
    Windows安全应急响应(一)
    net.exe和net1.exe的区别&联系.
    IIS搭建ASP站点
    在linux中安装VM tools
    第十五章 特殊权限
    第十四章 权限管理
    第十三章 用户组与提权
    第十一章 用户的创建
    第十章 组的创建
    第八章 vim 编辑器
  • 原文地址:https://www.cnblogs.com/qinfengxiaoyue/p/3713352.html
Copyright © 2011-2022 走看看