When a multiply-derived class has base classes that are unrelated, we create an inheritance structure similar to the OMT diagram in Figure 14.2. Multiply-derived class D1_D2 inherits from both Derived1 and Derived2 (its direct bases), which in turn inherit from separate bases (Base1 and Base2, respectively). Class D1_D2 has no common bases. The important characteristics of this pattern include the following:
At least one class is multiply-derived.
Its direct bases (Derived1 and Derived2) have no common bases.
Each “side” of the hierarchy is publicly derived.
Each side of the hierarchy is a polymorphic type (has at least one virtual function in its top base, Base1 and Base2).
The sides need not be symmetrical; ...