码迷,mamicode.com
首页 > 其他好文 > 详细

std::function()函数、std::bind()函数以及lambda

时间:2020-06-16 18:22:18      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:简化   种类型   UNC   参数类型   简单的   转换   func   color   参数   

1、std::function介绍

类模板std::function是一种通用的、多态的函数封装。

std::function的实例可以对任何可以调用的目标实体进行存储、复制、调用操作,这些目标实体包括普通函数Lambda表达式函数指针、以及其他函数对象等。std::function对象是对c++中现有的可调用实体的一种类型安全的包裹(函数指针这类可调用实体,是类型不安全的)。

通常std::function是一个函数对象类,它包装其他任意的函数对象,被包装的函数对象具有类型为T1,...,Tn的n个参数,并且返回一个可转换到R类型的值。std::function使用模板转换构造函数接收被包装的函数对象

特别是,闭包类型可以隐式地转换为std::function。

std::function统一和简化了相同类型可调用实体的使用方式,使编码变得更简单。

简单的理解就是:

通过std::function对c++中各种可调用实体(普通函数、Lambda表达式、函数指针、以及其它函数对象等)的封装,形成一个新的可调用的std::function对象;让我们不再纠结那么多的可调用实体

2、std::function的原型

template<class R, class ... Args>
class function<R(Args...)>

R是返回值类型,Args是函数的参数类型,实例一个std::function对象很简单,就是将可调用对象的返回值类型和参数类型作为模板参数传递给std::function模板类。例如

std::function<void()> f1;---->void f1();

std::function<int (int , int)> f2;---->int f2(int,int)

3、std::function的用法

 

std::function()函数、std::bind()函数以及lambda

标签:简化   种类型   UNC   参数类型   简单的   转换   func   color   参数   

原文地址:https://www.cnblogs.com/gary-guo/p/13142156.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!