#include using namespace std ; class Person { public: string firstName ; string lastName ; //virtual void getName() { cout << firstName << " " << lastName << endl ; } }; class Employee : public Person { public: string jobTitle ; //Polymorphism starts from here virtual void getName() { cout << firstName << " " << lastName << " " << jobTitle << endl ; } }; class Manager : public Employee { public: //ok to leave virtual out virtual void getName() { cout << firstName << " " << lastName << " " << jobTitle << " Manager" << endl ; } }; int main() { Person* p1 ; Employee* e1 ; Manager* m1 ; e1 = new Employee() ; e1->firstName = "Chuck" ; e1->lastName = "Wepner" ; e1->jobTitle = "Boxer" ; p1 = e1 ; p1->getName() ; delete e1 ; m1 = new Manager() ; m1->firstName = "Chuck" ; m1->lastName = "Wepner" ; m1->jobTitle = "Boxer" ; e1 = m1 ; e1->getName() ; //Make sure we delete the right type //or program will crash delete m1 ; return 0 ; }