sbi explained it nicely here:
Most examples boil down to callbacks: You call a function f()
  passing the address of another function g(), and f() calls g()
  for some specific task. If you pass f() the address of h()
  instead, then f() will call back h() instead. 
Basically, this is a way to parametrize a function: Some part of
  its behavior is not hard-coded into f(), but into the callback
  function. Callers can make f() behave differently by passing
  different callback functions. A classic is qsort() from the C
  standard library that takes its sorting criterion as a pointer to a
  comparison function. 
In C++, this is often done using function objects (also called
  functors). These are objects that overload the function call operator,
  so you can call them as if they were a function. Example: 
class functor {
  public:
     void operator()(int i) {std::cout << "the answer is: " << i << '\n';}
};
functor f;
f(42);
The idea behind this is that, unlike a function pointer, a function
  object can carry not only an algorithm, but also data: 
class functor {
  public:
     functor(const std::string& prompt) : prompt_(prompt) {}
     void operator()(int i) {std::cout << prompt_ << i << '\n';}
  private:
     std::string prompt_;
};
functor f("the answer is: ");
f(42);
Another advantage is that it is sometimes easier to inline calls to
  function objects than calls through function pointers. This is a
  reason why sorting in C++ is sometimes faster than sorting in C.