title: Virtual function inheritance
body: <p>I have a confusion about the inheriting the virtual property of a method.</p>
  
  <p>Let's suppose we have 4 classes: class A, class B, class C and class D.
  The classes are inherited by this way: A -> B -> C -> D, where A is the base class.</p>
  
  <p>By this time, I'm sure about this: Beginning the class method declaration with virtual in a base class (class A), makes the method virtual for all classes derived from the base class, including the derived ones of the derived classes. (B and C class methods determined to be virtual).</p>
  
  <p>The confusion is here. What if, in the base class A, there wouldn't be any virtual member. Instead, let's say, that class B declares a method to be virtual. I assume, that this change would make the function virtual for all the derived classes that belong to the inheriting chain (C and D classes). So logically, B for C and D, is a sort of their "base class", right? Or am I wrong?</p>