C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C中的函数对象(C 11)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在阅读有关boost :: function的内容,我对它的使用及其与我在文档中找到的其他C结构或术语的关系有点困惑,例如: here.

在C(C 11)的上下文中,boost :: function的实例,函数对象,函子和lambda表达式之间有什么区别?应该何时使用哪种构造?例如,什么时候应该在boost :: function中包装一个函数对象而不是直接使用该对象?

以上所有C构造实现函数语言的不同方式都称为闭包(一个函数,可能包含捕获的变量,可以作为值传递并由其他函数调用)?

解决方法

函数对象和仿函数是一回事;一个实现函数调用操作符operator()的对象. lambda表达式生成一个函数对象.具有boost :: function / std :: function的某些特化类型的对象也是函数对象.

Lambda的特殊之处在于lambda表达式具有匿名和唯一类型,并且是一种在线创建仿函数便捷方式.

boost :: function / std :: function的特殊之处在于它将任何可调用的实体转换为一个类型仅依赖于可调用实体的签名的仿函数.例如,lambda表达式每个都有一个唯一的类型,因此很难将它们传递给非泛型代码.如果你从lambda创建一个std :: function,那么你可以很容易地传递包裹的lambda.

大佬总结

以上是大佬教程为你收集整理的C中的函数对象(C 11)全部内容,希望文章能够帮你解决C中的函数对象(C 11)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。