Q:

Pointer Function

Can someone explain what this actually represents ? 
Foo *getfoo()
{
    return foo_object;
}

Foo here is a class.  
My question is what does the pointer before the function name represents?  

A:

As others noted, 'Foo *' syntax means function is returning a pointer to a place in the memory, not an object itself. 
It has the implications that, if you get this pointer, this means getfoo() could've allocated memory for it.  Thus it's possible you will have to free it yourself, otherwise this memory will be allocated for the whole time your program is running.  This is called a memory leak. 
Here is an example with freeing memory:
class Foo {};

Foo *getfoo() {
  Foo *f = new Foo();  // Memory allocated here
  return f;
}

int main () {
  Foo *g = getfoo();
  // some code here

  delete(g); // free the memory as "g" is no longer needed. 

  return 0;
}

In C++ it's crucial that you learn to manage memory.  Otherwise, sooner or later, your apps will fail.  There are some programming patterns helping with that, of which the most popular is smart pointers.