笔记:C++ 函数对象

内容主要来自维基百科

函数对象:一个对象允许被当作普通函数来使用

与函数指针比,优点:

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;
}
原文地址:https://www.cnblogs.com/-maybe/p/7491995.html