仿函数的通俗解释,就是使用起来像函数一样的东西。
如果针对某个class进行operator()重载,它就成为了一个仿函数。
#include <iostream>
using namespace std;
//plusElement成为了一个仿函数
template <class T>
struct plusElement {
T operator()(const T& x, const T& y) const { return x + y; }
};
//同理,minusELement也成为了一个仿函数
template <class T>
struct minusElement {
T operator()(const T& x, const T& y) const { return x - y; }
};
int main()
{
//产生仿函数对象
plusElement<int> plusObj;
minusElement<int> minusObj;
//使用仿函数,就像使用普通函数一样
cout << plusObj(3, 5) << endl;
cout << minusObj(3, 5) << endl;
//以下直接产生仿函数的临时对象(第一个括号),并调用之(第二个括号)
cout << plusElement<int>()(40, 10) << endl;
cout << minusELement<int>()(40, 10) << endl;
return 0;
}
运行结果: