美文网首页
C++11 std::functional

C++11 std::functional

作者: Tomtoms | 来源:发表于2019-11-07 23:04 被阅读0次

    [C++11] std::functional

    C++11中std::functional最常用的就是用来实现函数回调。这里做一些补充

    std::functional是一种通用、多态的函数封装

    可以对functional实体进行存储、复制、调用。这些实体包括Lambda表达式、函数指针、普通函数和其他函数对象等。其中函数指针是非类型安全的,functional可以对其实现类型安全的包裹。

    示例:

    #include <iostream>
    #include <functional>
    using namespace std;
    
    std::function<int(int)> Func;
    
    // 普通函数
    int ordinaryFunc(int a)
    {
        return a;
    }
    
    // 匿名函数
    auto lambdaFunc = [](int a)->int{return a;};
    
    // 仿函数
    class Functor
    {
    public:
        int operator()(int a)
        {
            return a;
        }
    };
    
    // 成员函数和静态函数
    class Class
    {
    public:
        int ClassMember(int a){return a;}
        static int StaticMember(int a){return a;}
    };
    
    int main()
    {
        Func = ordinaryFunc;
        int result;
        result = Func(10);
        cout << "普通函数" << result << endl;
    
        Func = lambdaFunc;
        result = Func(20);
        cout << "Lambda函数" << result << endl;
    
        Functor m_functor;
        Func = m_functor;
        result = Func(30);
        cout << "仿函数" << result << endl;
    
        Class m_obj;
        Func = std::bind(&Class::ClassMember, m_obj, std::placeholders::_1);
        result = Func(40);
        cout << "成员函数" << result << endl;
    
        Func = Class::StaticMember;
        result = Func(50);
        cout << "静态函数" << result << endl;
    
        return 0;
    }
    
    

    后续补上functional如何实现回调

    相关文章

      网友评论

          本文标题:C++11 std::functional

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