std::function详解

  • 定义
    std::function是函数包装器,能存储任何符合模板参数的函数对象,拥有一致参数类型、相同返回值类型(其实不必完全相同)的函数对象,可以由 std::function 统一包装起来,具有多态性,是模板类。
    通常定义函数指针方法:

    typedef  void*ptr)(intint),int*ptr)(void),这里的ptr就是一个函数指针。
    

    而使用了std::function这个类的时候,我们可以这样使用。例如:

    	std::function<void(int ,int)> a;
    	std::function<int()> b;
    
  • 例子

    #include <iostream>
    #include <string>
    #include <functional>//想使用function 模板类就要加上这个头文件
    //std::function 是一个函数模板类;std::bind模板函数
    using namespace std;
    std::function<void(int a)> fun1;
    std::funcion<void(string str)> func2;
    std;:function<string(int a, int b)> fun3;
    void normalfun(int a) //普通函数
    {}
    static void staticfun(string str) //普通静态函数
    {}
    auto lambda = [](int a, int b)->string{int c = a + b; return "hello"}; //Lambda表达式
    int main()
    {
    	fun1 = normalfun; fun1(2);
    	fun2 = staticfun; fun2("hello");
    	fun3 = lambda; cout << fun3(2, 3) << endl;
    	return 0;
    }
    
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值