1.仿函数概念
仿函数(functor),语法上和函数一样,用起来也跟函数一样,但是她是一个如假包换的类。使用时她是一个拥有函数功能的对象。其功能实现就是类中实现一个(),这个类就有了类似函数的行为,就是一个仿函数类了。但是为啥费劲搞这么个四不像唻,当然是他拥有很高的应用市场。她的一个比函数高效的特性就是,仿函数里面的参数可以有记忆功能,为什么能记住呢,因为她是一个对象啊,对象就可以拥有自己的成员变量,然后就记住啦。然而函数要实现这样的功能要麻烦许多,起码要加入一个static类型的变量,或者一个全局的变量当作函数的参数传入,反正就是麻烦加不安全,这样一想仿函数就很有必要知道一下啦!!
2.仿函数实例
一个仿函数,目的是给参数加上一个固定的数然后返回:
-
class Add
-
{
-
public:
-
Add(int p) { x = p; }
-
int operator()(int a) { return a + x; }
-
private:
-
int x;
-
}
然后声明一个对象
-
Add add1(5);
-
Add add2(10);
之后就可以
-
int x = add1(2);
-
int y = add2(2);
-
cout<<"x result: "<<x<<endl;
-
cout<<"y result: "<<y<<endl;
输出结果:
x result: 7
y result: 12
如上所述,add1是基于值为5的成员变量的加法
add2是基于值为10的成员变量的加法
还有就是这一思想可以应用到STL的迭代中大展身手!!
3.参考链接:
http://blog.csdn.net/tianshuai1111/article/details/7687983
http://my.oschina.net/llehs/blog/180594
阅读(1883) | 评论(1) | 转发(0) |