- 函数对象首先是一个对象,他的类只不过重载了()【调用操作符】而已。很简单。
使用它第一需要定义一个类,并重载(),如下:
class FuncObj{
public:
int operator()(int a, int b)//操作符()重载
{
return a+b;
}
}; - 他的一个应用就是作为函数的形参,以取代函数指针。
定义一个函数,形参为对象(重载了()的类的类对象) :
int addFunc(int a, int b, FuncObj& func){
int sum = func(a, b);
return sum;
} - 调用函数:
FuncObj obj;
cout < addFunc(4,6,obj);//输出为10.
函数对象在STL中应用十分广泛。