仿函数

shienh 2020年02月08日 260次浏览

函数对象也叫仿函数。是重载了‘()’操作符的类,使得类对象可以像函数那样调用。
重载的 operator()要求获取一个参数的类称为‘一元仿函数’,要求重载的operator要求
获取2个参数的类,称为‘二元仿函数’。

#include <iostream>
using namespace std;

class Function{
public:
    void operator()(int value){
        count++;
        cout<<"value:"<<value<<" count"<<count<<endl;
    }
private:
    //拥有自己的内部状态
    int count = 0;
};

//仿函数 可以作为函数参数传递
void doFunction(Function fun,int m){
    fun(m);
}

int main(int argc, char *argv[])
{
    Function fun;
    //输出100
    fun(100);
    fun(100);
    fun(100);
    fun(200);

    doFunction(fun,10);

    return 0;
}