Possible Duplicates:
C++ Functors - and their uses.
Why override operator() ?
I've seen the use of operator()
on STL containers but what is it and when do you use it?
Possible Duplicates:
C++ Functors - and their uses.
Why override operator() ?
I've seen the use of operator()
on STL containers but what is it and when do you use it?
It makes the object "callable" like a function. Unlike a function though, an object can hold state. Actually a function can do this in a weak sense, using a static local, but then that static local is permanently there for any call to that function made in any context by any thread.
With an object acting as a function, the state is a member of that object only and you can have other objects of the same class that have their own set of member variables.
The entirety of boost::bind (which was based on the old STL binders) is based on this concept.
The function has a fixed signature but often you need more parameters than are actually passed in the signature to perform the action.
That operator turns your object into functor. Here is nice example of how it is done.
Next example demonstrates how to implement a class to use it as a functor :