#include using namespace std; class Animal { public: void what() { cout << "I am Animal." << endl; } virtual void sound() { cout << "I make animal noises." << endl; } void identify() { what(); sound(); } }; class Cat : public Animal { public: void what() { cout << "I am Cat." << endl; } void sound() { cout << "I purr." << endl; } }; int main() { Animal animal; Cat cat; cout << endl << "After automatic allocation:" << endl; animal.identify(); cat.identify(); cout << endl << "After animal = cat:" << endl; animal = cat; animal.identify(); Animal *animalp = new Animal(); Cat *catp = new Cat(); cout << endl << "After dynamic allocation:" << endl; animalp->identify(); catp->identify(); cout << endl << "After animalp = catp:" << endl; animalp = catp; animalp->identify(); return 0; }