Might not matter in this particular example as you're not using a generic Creature pointer to a Mammal object anywhere, but these:
Code:
class Creature {
~Creature(){
std::cout << "Destroying Creature" << std::endl;
}
void eat(){
std::cout << "Creature is eating" << std::endl;
}
...should really be virtual.