12.1. Why Is RTTI Necessary?

Suppose a class library contains an Investment class with a virtual purchase() function.

class Investment {                         // Library class 
private:
   . . .
public:
   virtual float purchase();
   . . .
};

Our application requires Stock and Land objects, so we create the following classes as subtypes of Investment to reuse code from the class library.

class Stock : public Investment {          // our class 
public:
   float purchase();                    // override virtual purchase()
   virtual float dividend() const;      // new virtual function
};

class Land : public Investment {        // our class
public:
   float purchase();                    // override virtual purchase()
};

The Stock class and the Land class override purchase() from the Investment base class. Consequently, calls to purchase() ...

Get Navigating C++ and Object-Oriented Design now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.