This specific use of
virtual
is related to quite a delicate feature of C++, specific to C++, called
virtual base classes. You can understand how it works from this chapter of this manual:
http://www.learncpp.com/cpp-tutorial/118-virtual-base-classes[
^].
This is some kind of complexity related to C++
multiple inheritance. When you have the same inherited members in more then one inheritance path on the inheritance graph, their meaning could be ambiguous. C++ offers two ways to derive from a base class, two options for inheritance.
—SA