functor的深入理解
Author:[email protected] Date:
functor,词典查了下
觉得在计算机里面 应该叫功能元件比较好些
实现functor - 增强型的函数指针
http://www.cppblog.com/kevinlynx/archive/2008/03/17/44678.html
这个解释好点:但是是英文版
http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
需求:
开发一种组件,用以包装C函数、通常的函数对象、成员函数,使其对外保持一种一致的接口。我将最终的
组件称为functor,这里的functor与loki中的functor以及boost中的function功能一致,同STL中的functor
在概念层次上可以说也是一样的。那么,functor其实也可以进一步传进其他functor构成新的functor。
C++世界里还有一种组件,称做bind(er),例如STL中的binder1st、binder2nd,以及boost中的bind。所谓
的bind是将一些参数与函数之类的关联起来,当执行该bind创建的对象时,库会自动将之前bind的参数传
递给bind创建的对象。bind创建出来的对象在某种程度上来说也是一种functor。
实现:
包装C函数和函数对象的functor事实上是一致的,而实现包装成员函数的functor则需要多传入一个对象参数。
因此这里先讨论包装C函数和函数对象的functor。
包装C函数:
思考下各种不同的C函数的共同点和不同点,共同点就是这些函数都有一个返回值,参数个数可能相同,可能
不同,参数类型可能相同可能不同。考虑到模板对于类型的泛化特性,对于参数类型来说,可以轻松实现无
关性。而至于参数个数的泛化,则要复杂点。这里先考虑实现参数个数为1个的functor:
转载本站文章《functor的深入理解》,
请注明出处:https://www.zhoulujun.cn/html/theory/ComputerScienceTechnology/Constitution/2016_0922_7893.html