class Add
{
public:
int operator()(int a, int b)
{
return a+b;
}
};
void main()
{
Add myAdd;
printf("%d\n",myAdd(2,3)); // myAdd(2,3) 相当于myAdd.operator(2,3);
system("pause");
}
//仿函数的优点:
1,仿函数可以生成不同的实例对象,从而使使用过程的互相影响隔绝。而一般函数总是以类的形式进行:导致不同的使用过程可能相互影响。
打个比方: 统计某文件夹里的所有文件数目和大小等信息,函数的参数可能相当多,而且不一定总是用到。
如果不用仿函数你会很吐血, 因为如果采用全局变量,在你运行统计函数(一般函数)时,有第三方又调用了这个函数怎么办? 如果采用局部变量,那么参数这么多,每次调用总是要填也不是办法。
但仿函数就可以通过生成不同的对象,使不相互影响。
1,可以初始化。
2,由于有成员变量,可以实现不同时期同样调用的不同状态。
3,可以提供继承体系。
4,可以支持用户设计出模板接口。
5,仿函数通常比一般函数更快。