Class C++ Tutorial

#include 
 
 class Animal
 {
 public:
     Animal():itsAge(1) {  }
     ~Animal() { }
     virtual void Speak() const { std::cout << "Animal speak!\n"; }
 protected:
     int itsAge;
 };
 
 class Dog : public Animal
 {
 public:
     void Speak()const { std::cout << "Woof!\n"; }
 };
 
 class Cat : public Animal
 {
 public:
     void Speak()const { std::cout << "Meow!\n"; }
 };
 
 class Horse : public Animal
 {
 public:
     void Speak()const { std::cout << "Winnie!\n"; }
 };
 
 class Pig : public Animal
 {
 public:
     void Speak()const { std::cout << "Oink!\n"; }
 };
 
 int main()
 {
     Animal* theArray[5];
     Animal* ptr;
     int i;
     theArray[0] = new Dog;
     theArray[1] = new Cat;
     theArray[2] = new Horse;
     theArray[3] = new Pig;
     theArray[4] = new Animal;
     
     for (i=0;i<5;i++)
         theArray[i]->Speak();
     return 0;
 }
Woof!
Meow!
Winnie!
Oink!
Animal speak!