函数对象
定义了函数调用操作符的类,其对象常称为函数对象,即它们是行为类似函数的对象。
其中函数调用操作符必须定义为成员函数。
一个类可以定义函数调用操作符的多个版本,由形参数目和类型加以区别。
1 class A 2 { 3 public: 4 int operator()(int n) 5 { 6 return (n>0)?n:(-n); 7 } 8 };
函数对象的应用
可以用于通用算法的实参。
count_if
可以根据需要进行初始化、模板化、重载等。
1 class A 2 { 3 public: 4 A(int n=0):m(n){} 5 bool operator()(int v) 6 { 7 return (v>m)?true:false; 8 } 9 private: 10 int m; 11 };