函数对象[转自百度百科]

 
重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象。[1]
一个类对象,表现出一个函数的特征,就是通过“对象名+(参数列表)”的方式使用一个
类对象,如果没有上下文,完全可以把它看作一个函数对待。这是通过重载类的
operator()来实现的。比如,对于调用
int s = sum(1, 1);
你可能把它看作一个函数调用:
int sum(int i, int j) { return i+j; }
但很可能它是一个函数对象:
class Sum {
public:
int operator()(int i, int j) { return i+j; }
};
Sum sum;
而大多数情况是
template <class T>
class Sum {
public:
T operator()(T i, T j) { return i+j; }
};
Sum <int> sum;
“在标准库中,函数对象被广泛地使用以获得弹性”,标准库中的很多算法都可以
使用函数对象或者函数来作为自定的回调行为;