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.