[Help]virtual methods, constructors, destructors.
I would appreciate explanations, my book does a bad jawb explaining 


Animal::GetAnimalType()
{
return "I'm a generic animal!";
}
Dog::GetAnimalType()
{
return "I'm a dog!";
}
Cat::GetAnimalType()
{
return "I'm a cat!";
}
Korean::GetAnimalType()
{
return "I AM A HOMOSEXUAL KOREAN!!!!!!!";
}
class Animal
{
public:
virtual char *GetAnimalName();
};
class Dog : public Animal
{
char *GetAnimalName();
};
class Cat : public Animal
{
char *GetAnimalName();
};
class Korean : public Animal
{
char *GetAnimalName();
}
#include <iostream>
#include "classes.h"
using namespace std;
int main()
{
Animal *Anus[4];
Anus[0] = new Animal;
Anus[1] = new Dog;
Anus[2] = new Cat;
Anus[3] = new Korean;
for(int i = 0; i < 4; i++)
{
cout<<Anus[i]<<endl;
}
return 1;
}