Virtual inheritance is used to avoid multiple copies of a base class in a multiple-inherited object. However, there are cases where multiple copies of a base are needed in a derived class. In such cases, virtual inheritance is intentionally avoided. Suppose you have a scrollbar class that serves as a base for two other subclasses:
class Scrollbar{ private: int x; int y; public: void Scroll(units n); //