内容主要来自维基百科
函数对象:一个对象允许被当作普通函数来使用
与函数指针比,优点:
1.编译器可以内联执行函数对象的调用
2.函数对象内部可以保持状态
C++中,function object 是定义了函数调用运算符()的类对象,称作class type functor
C++中,还有其他类型的function object
C++ stl中的algorithm,大量使用函数对象来处理容器中的元素。
使用例子:
//File Name: functor.cpp //Created Time: 2017年09月07日 星期四 20时13分30秒 #include <iostream> using namespace std; template<typename T> struct plus{ T operator()(const T& x,const T& y) const{ return x + y; } }; int main(){ //产生仿函数对象 plus<int> plusobj; //这样子使用仿函数,就像使用一般函数一样 cout << plusobj(3,5) << endl; //直接产生仿函数的临时对象(第一对小括号),并且调用它(第2对小括号) cout << plus<int>()(3,5) << endl; return 0; }