Base Classes

The inheritance process creates a new derived class that is made up of the members of the base class(es) plus any new members added by the derived class. In a multiple-inheritance, it is possible to construct an inheritance graph where the same base class is part of more than one of the derived classes. The following figure shows such a graph.

Diagram of a class inheritance hierarchy that has multiple instances of the CollectibleString base class.
Multiple instances of a single base class

In the figure, pictorial representations of the components of CollectibleString and CollectibleSortable are shown. However, the base class, Collectible, is in CollectibleSortableString through the CollectibleString path and the CollectibleSortable path. To eliminate this redundancy, such classes can be declared as virtual base classes when they are inherited.