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) ...
Get C++ Primer Plus, Fourth Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.