关闭

我所不熟悉的C++知识

865人阅读 评论(0) 收藏 举报

1 Functor
函数对象, 其实就是一个重载了operator()的类。其使用方式与函数相似。
使用functor有两个优点:
1) Functor相比Function来说,可以传递更多的信息:因为Functor是以类的方式存在的,它可以包含任意多的信息。除了传入参数以外,你还可以在类内预设一些其它的信息。
2) 在作为参数传递时,Functor的效率往往比Function要高。这是因为,在把Functor作为参数传递时,你实际上传递的是Functor对象,在整个编译过程中,编译器始终知道它所在处理的Functor对象是哪个Functor类的,也就是说,它可以做编译时的优化。而对于Function来说,它往往以指针的方式传递,对于编译器来说,很难做(并不是不可能)编译时的优化。

//function
inline void increase_one_func(int& i)
{
 ++i;
}
//functor
class increase_one_functor
{
public:
 void operator()(int& i)
 {
  ++i;
 }
}increase_one_functor;

int iCount = 1;
increase_one_functor(iCount);   //iCount = 2;
increase_one_func(iCount); //iCount = 3;

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:25645次
    • 积分:402
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:7篇
    • 译文:0篇
    • 评论:13条
    文章存档
    最新评论