Source of inherit2.cpp


  1: /** @file inherit2.cpp */

  3: #include <iostream>
  4: using namespace std;

  6: class Base
  7: {
  8: public:
  9:     int i;
 10:     Base(int x) { i = x; }
 11:     virtual void display()
 12:     {
 13:         cout << "\nUsing Base version of display(): ";
 14:         cout << i;
 15:         cout << "\nPress Enter to continue ... ";  cin.ignore(80, '\n');
 16:     }
 17: };


 20: class Derived1 : public Base
 21: {
 22: public:
 23:     Derived1(int x) : Base(x) {}
 24:     virtual void display() 
 25:     {
 26:         cout << "\nUsing Derived1's version of display(): ";
 27:         cout << i*i;
 28:         cout << "\nPress Enter to continue ... ";  cin.ignore(80, '\n');
 29:     }
 30: };


 33: class Derived2 : public Base
 34: {
 35: public:
 36:     Derived2(int x) : Base(x) {}
 37:     virtual void display() 
 38:     {
 39:         cout << "\nUsing Derived2's version of display(): ";
 40:         cout << i+i;
 41:         cout << "\nPress Enter to continue ... ";  cin.ignore(80, '\n');
 42:     }
 43: };


 46: int main()
 47: {
 48:     cout << "\nThis program illustrates how C++ uses virtual functions "
 49:         "\nto implement polymorphism.";
 50:     cout << "\nPress Enter to continue ... ";  cin.ignore(80, '\n');

 52:     Base *p;
 53:     Base basObject(10);  
 54:     Derived1 derived1Object(10);   
 55:     Derived2 derived2Object(10); 

 57:     p = &basObject;
 58:     p->display(); //Use Base's display()

 60:     p = &derived1Object;
 61:     p->display(); //Use Derived1's display()

 63:     p = &derived2Object;
 64:     p->display(); //Use Derived2's display()
 65: }