After reading sbi and Eli Bendersky\'s answers in this question I started to wondering what static member functions are for.
A class\' friend free function shouldn\'
Static methods:
Animal and the static method is Create, you have to call it with Animal::Create. This is better than global functions, and allow implementing Factories and "virtual constructors" with relatively natural syntax.