## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

### Function Objects (aka Functors)

Many STL algorithms use function objects, also known as functors. A functor is any object that can be used with () in the manner of a function. This includes normal function names, pointers to functions, and class objects for which the () operator is overloaded, that is, classes for which the peculiar-looking function operator()() is defined. For example, you could define a class like this:

```class Linear
{
private:
double slope;
double y0;
public:
Linear(double _sl = 1, double _y = 0)
: slope(_sl), y0(_y) {}
double operator()(double x) {return y0 + slope * x; }
};
```

The overloaded () operator then allows you to use Linear objects like functions:

` Linear f1; Linear f2(2.5, 10.0); double y1 = f1(12.5); // rhs is f1.operator()(12.5) ...`

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required