C++函数对象

来源:互联网 发布:精灵乐章 知乎 编辑:程序博客网 时间:2024/05/29 15:06

函数对象---也叫函数符

函数符是可以以函数方式与()结合使用的任意对象

包括:函数名、指向函数的指针和重载了()操作符的类对象(即定义了operator()()的类)


函数符概念:

#生成器:不用参数就可以调用的函数符

#一元函数:用一个参数可以调用的函数符

#二元函数:用两个参数可以调用的函数符

#断言:返回bool值的一元函数 

#二元断言:返回bool值的二元函数


将一个接受两个参数的模板函数转换为接受单个参数的函数对象

template<class T>

bool tooBig(const T &val,const T &lim)

{

return val>lim;

}

则可以使用类将它转换为单个参数的函数对象

template<class T>

class TooBig

{

  private:

     T cutoff;

  public:

     TooBig(const T &t):cutoff(t){}

     bool operator()(const T &v){return tooBig<T>(v,cutoff);}

};

原创粉丝点击