posts - 58,  comments - 75,  trackbacks - 0
    仿函数,就是是一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。
    在我们写代码时有时会发现有些功能的实现的代码,会不断的在不同的成员函数中用到,但是有不好将这些代码单立出来成为一个类的一个成员函数。但是又很想复用这些代码。写一个公共的函数,可以,这是一个解决方法,不过函数用到的一些变量,就可能成为公共的全局变量,再说为了复用这么一片代码,就要单立出一个函数,也不是很好维护。这时就可以用仿函数了,写一个简单类,除了那些维护一个类的成员函数外,就只是实现一个operator(),在类实例化时,就将要用的,非参数的元素传入类中。这样就免去了对一些公共变量的全局化的维护了。又可以使那些代码独立出来,以便下次复用。而起这些仿函数,还可以用关联,聚合,依赖的类之间的关系,于用到他们的类组合在一起,这样有利于资源的管理(这点可能是它相对与函数最显著的有点了)。如果在配合上模板技术和policy编程思想,那就更是威力无穷了,大家可以慢慢的体会。
     在下只是抛砖引玉,希望大家多多指教。
posted on 2006-03-22 22:15 walkspeed 阅读(791) 评论(3)  编辑 收藏 引用

FeedBack:
# re: 使用仿函数来管理分散的常用代码
2006-03-22 23:49 | 笑笑生
有理
  回复  更多评论
  
# re: 使用仿函数来管理分散的常用代码
2006-03-23 09:16 | christanxw
怎么不做个例子看看?  回复  更多评论
  
# re: 使用仿函数来管理分散的常用代码
2006-03-23 09:21 | wonder.wj
其实这就是stl里面的function object,即函数对象。这样就可以很容易的编写一个带函数参数的模板对象,并且这个参数可以进行必要的初始化。
如:
template <class T>
void test(T f)
{
T("hello");
}

使用模板的方式,可以将字符串打印出来,也可以将其输出到文件,很灵活。  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理



<2006年3月>
2627281234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(4)

随笔分类(64)

随笔档案(58)

文章分类(3)

文章档案(3)

相册

收藏夹(9)

C++零碎

好友

搜索

  •  

积分与排名

  • 积分 - 159870
  • 排名 - 163

最新评论

阅读排行榜

评论排行榜