1.什么是函数对象
很多STL算法都是用函数对象,也叫函数符(functor)。函数符是可以以函数方式与()结合使用的任意对象。这包括函数名,指向函数的指针和重载了()运算符的类对象,例如:
class Linear
{
private:
double slope;
double y0;
public:
Linear(double s1 = 1,double y = 0):slope(s1),y0(y){
}
//重载()运算符
double operator()(double x){
return y0 * slope * x;}
}
重载的()运算符使得能够像使用函数那样使用Linear对象:
Linear f1;//Linear对象
Linear f2(3.5,4.5);//Linear对象
double y1 = f1(12.5);//调用重载的()
double y2 = f2(0.4)