A virtual base class (Grandparent class) is a class that avoids duplication of inherited data in derived class (child class) derived from parent classes (parent1 and parent2) which in turn derived from base class.
w.r.t. above diagram:
class L
{
/* ... */
};
// indirect base class
class B1 : virtual public L { /* ... */ };
class B : virtual public L { /* ... */ };
class D : public B1, public B { /* ... */ };
Two derived classes as shown in above diagram B1 and B have a common base class L, and another class D inherits properties of B1 and B base classes. Then class D inherits properties of class L two times from two base classes B1 and B. This leads to duplication of data in derived class D. To avoid this duplications class L is declare as virtual base class while defining base classes B1 and B.