社区
姜雪伟的课程社区_NO_4
C++11基础教程
帖子详情
15函数对象包装器
海洋_
领域专家: 游戏开发技术领域
2023-01-12 14:42:55
课时名称
课时知识点
15函数对象包装器
15函数对象包装器
...全文
293
回复
打赏
收藏
15函数对象包装器
课时名称课时知识点15函数对象包装器15函数对象包装器
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
【C++】C++11的新特性 — function
包装
器
, bind
包装
器
本文讲解了C++11中新添加的function
包装
器
和bind
包装
器
的使用!
C++11
包装
器
一般而言,我们用bind
函数
可以把一个原本接收N个参数的
函数
fn,通过绑定一些参数,返回一个接收M个(M 可以大于N,但这么做没什么意义)参数的新
函数
。它的基本用途是将一个
函数
与其参数一起进行绑定,生成一个新的
函数
对象
,这个新
对象
可以在不同的上下文中被调用,而不需要再次提供那些已经绑定的参数。
函数
包装
器
,也称为
函数
适配
器
或
函数
封装
器
,是一种编程模式,用于将
函数
或
对象
包装
在另一层抽象中,以改变其调用签名或行为。,其内部会存储很多变量,这些变量用于
函数
的传参,变量的名字为。可能是
函数
名,
函数
指针,
函数
对象
。
C++11中的lambda 与
包装
器
实际在底层编译
器
对于lambda表达式的处理方式,完全就是按照
函数
对象
的方式处理的,即:如果定义了一个lambda表达式,编译
器
会自动生成一个类,在该类中重载了operator()。n的名字,其中n是一个整数,这些参数是“占位符”,表示newCallable的参数,它们占据了传递给newCallable的参数的“位置”。可以将bind
函数
看作是一个通用的
函数
适配
器
,它接受一个可调用
对象
,生成一个新的可调用
对象
来“适应”原
对象
的参数列表。在该
函数
体内,除了可以使用其参数外,还可以使用所有捕获到的变量。
C++11
包装
器
为了解决这些问题,C++11引入了function,它是一个通用的多态
函数
包装
器
,能够存储、复制及调用任何可调用目标(Callable target)——
函数
、lambda表达式、绑定表达式(bind expression)以及其他
函数
对象
,并可以作为它们的通用类型。这允许我们预先设置
函数
的某些参数,然后创建一个新的
函数
对象
,这个新的
函数
对象
在被调用时,会自动将预先设置的参数传递给原始的可调用
对象
。它提供了一种通用的方式来处理这些可调用
对象
,使得
函数
式编程和回调机制在C++中变得更加容易和灵活。
【C++11新特性】function
包装
器
function
包装
器
是一种
函数
包装
器
,也叫做适配
器
。它可以对可调用
对象
进行
包装
,C++中的function本质就是一个类模板。Ret:被
包装
的可调用
对象
的返回值类型。Args…:被
包装
的课调用
对象
的形参类型。
包装
示例function
包装
器
可以对可调用
对象
进行
包装
,包括
函数
指针(
函数
名)、仿
函数
(
函数
对象
)、lambda表达式、类的成员
函数
。public:class Pluspublic:int main()// 1、
包装
函数
指针(
函数
名)
姜雪伟的课程社区_NO_4
1
社区成员
144
社区内容
发帖
与我相关
我的任务
姜雪伟的课程社区_NO_4
畅销书作者,著作:《手把手教你3D游戏引擎架构》、《Unity3D实战核心技术详解》,《Cocos2d-x 3.x 图形学渲染技术讲解》等。
复制链接
扫一扫
分享
社区描述
畅销书作者,著作:《手把手教你3D游戏引擎架构》、《Unity3D实战核心技术详解》,《Cocos2d-x 3.x 图形学渲染技术讲解》等。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章