WAGR V class was created in 1955.
WAGR L class - diesel - was created in 1967.
Whenever a derived class requires direct inheritance from a base class, even if it inherits that base class indirectly. That is, if V is a base class from which B is derived, and D is derived from B, then D inherits from V indirectly (through B). But if B is virtually derived from V, then D will inherit directly from V. This feature is commonly used in conjunction with multiple inheritance. Examine the following declarations: class V{}; class B1: public V{}; class B2: public V{}; class M: public B1, public B2{}; Now suppose you have the following code: M m; // Declare an instance of M. V& v = m; // Ambiguous... The problem with this is that M inherits V from both B1 and B2, and therefore inherits two separate instances of V. The compiler is unable to determine which instance of V you want to refer to. One solution to this would be to use static casts to indirectly refer to an explicit instance of V: V& v = static_cast<B1&>(m); or V& v = static_cast<B2&>(m); While this is certainly workable, it is an ugly approach that places far too much responsibility upon the programmer to ensure the correct instance of V is being referred to. However, unless there is a specific need to have two instances of V within M, the problem can be resolved with virtual inheritance. By virtually deriving both B1 and B2 from V, M will directly inherit just one instance of V, which is then shared, virtually, between B1 and B2: class V{}; class B1: public virtual V{}; class B2: public virtual V{}; class M: public B1, public B2{}; M m; V& v = m; // No ambiguity. Now M can access all the members of V directly, as can B1 and B2, because they now share the same instance of V. Note that it doesn't matter whether the virtual keyword is placed before or after the access specifier (which is public in this case). "virtual public" and "public virtual" have the same meaning.
SR Z class was created in 1929.
Cutting Class was created in 1989.
DSB Class ME was created in 1981.
WAGR W class was created in 1951.
WAGR S class was created in 1943.
WAGR Z class was created in 1953.
WAGR K class was created in 1893.
WAGR O class was created in 1896.
WAGR E class was created in 1903.
WAGR Dm class was created in 1945.
WAGR N class was created in 1896.
WAGR Msa class was created in 1930.
WAGR Y class was created in 1953.
WAGR Dd class was created in 1946.
WAGR X class was created in 1954.