仿函数就是使对象使用行为看上去像个函数。
函数的使用是这样:
Function(param1,param2,...);
而对象的使用是这样:
Object.memberfunction(param1,param2...);
而仿函数对象的使用是这个样的
Object(param1,param2,...);
这样我们可以看出,从外表上看,仿函数对象和函数是一个东西。呵呵,当然他们是不同的。他们一样 不过是在使用的外形上一样罢了。
一个仿函数类如下定义
class ObjectFunction
{
.......
public:
返回的类型 operator() ([param1,param2,...]);
};
例1
class ObjectFunction1
{
.......
public:
void operator() () { count << "No Param ObjectFuntion" << endl;
};
例2
class ObjectFunction2
{
........
public:
bool operator() (int x)
{
count << "Have Param ObjectFuntion" << endl;
count << "This is ObjectFuntion's Param" << x << endl;
return true;
}
}
仿函数的关键是要实现 operator() 运算符。