What does it mean when "virtual" is in "class Foo : public virtual Bar" as opposed to "virtual void frob()"?
For a given method there are 8 cases stemming from the presence or absence of virtual in the following three locations.
- A superclass's functions.
- The inheritance chain for this class.
- This classes functions.
I think I understand how numbers 1 and 3 interact but number 2 seems redundant. Is it? What am I not understanding?