请教一个问题:关于function 与 functor的理解

ack1222 2008-04-07 08:50:01
我自己理解这两个除了形式上的差别好像没有其它的差别了

好像用functor的地方都可以用function来替换.但看到一本书有这样写:C++ provides a better and more elegant solution: function objects or functors.

不知functor比function到底elegant在哪里呢???他们两个有什么差别呢???
...全文
96 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
arong1234 2008-04-07
  • 打赏
  • 举报
回复
哈哈,啥都能引经据典啊:)我还从来没看过啥标准呢:)

[Quote=引用 5 楼 hityct1 的回复:]
我觉得:
functor最大的好处时它可以拥有状态(因为它可带成员变量),可以同时拥有两个状态不同的的实体

具体可以看《c++标准程序库》5.9和8.1
[/Quote]
baihacker 2008-04-07
  • 打赏
  • 举报
回复
形式地理解就是对象具有(参数列表)操作的一个对象,函数语义
hityct1 2008-04-07
  • 打赏
  • 举报
回复
我觉得:
functor最大的好处时它可以拥有状态(因为它可带成员变量),可以同时拥有两个状态不同的的实体

具体可以看《c++标准程序库》5.9和8.1
arong1234 2008-04-07
  • 打赏
  • 举报
回复
举个例子说,假如我们设计随机数发生器,如果用函数实现,我们只能一个进程用一个种子产生一组随机数,假如有不同的模块需要不同的种子,则做不到
而用functor设计,你可以每个functor实例给一个种子,而且,在你产生随机数时,你可以同时存储所有发生过的随机数的均方差和标准差,而这在函数里做不到
arong1234 2008-04-07
  • 打赏
  • 举报
回复
functor是类的实例,因此具有类的一切功能。你说类比普通函数能带的东西是不是多多了
例如:functor可以带成员变量,保存以前计算的历史数据,可以算一个带状态的“函数”
其次:functor自然也支持多态,而函数是没有这个能力的

在C++里,类就是一切,而function只是很小的代码片断
[Quote=引用楼主 xaoru2001 的帖子:]
我自己理解这两个除了形式上的差别好像没有其它的差别了

好像用functor的地方都可以用function来替换.但看到一本书有这样写:C++ provides a better and more elegant solution: function objects or functors.

不知functor比function到底elegant在哪里呢???他们两个有什么差别呢???
[/Quote]
jieao111 2008-04-07
  • 打赏
  • 举报
回复
指针不能有参数吗
  • 打赏
  • 举报
回复
一个对象比一个指针好的一点是,能够携带参数.

64,680

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧