class Base
class Derived1
class Derived2
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: }