How can it be useful to overload the “function call” operator?
This can be used to create “functors”, objects that act like functions: class Multiplier { public: Multiplier(int m): multiplier(m) {} int operator()(int x) { return multiplier * x; } private: int multiplier; }; Multiplier m(5); cout << m(4) << endl; The above prints 20. The Wikipedia article linked above gives more substantial examples.