title: Turning a non-pure virtual function into pure in a subclass
body: <p>So, I have this polymorphic hierarchy:</p>
  
  <pre><code>ClassA
  Is not abstract, no pure virtual functions, but a few virtual functions
  
  ClassB:public ClassA
  Defines an extended interface for a certain type of subclass; 
   is abstract with pure virtual functions
  
  ClassC:public ClassB
  Usable class, no more subclassing
  </code></pre>
  
  <p>Here's the deal, I will have objects of <code>ClassA</code> and <code>ClassC</code> thrown together into containers and iterated through. To perform this iteration, a non-pure virtual function is present in <code>ClassA</code> but is empty with just <code>{}</code>; that is, it is empty, made available only if the iteration encounters a <code>ClassC</code> in which case it is invoked, otherwise it does nothing. I can't have it be pure otherwise I cannot have objects of <code>ClassA</code>.</p>
  
  <p>But to ensure that <code>ClassC</code> does in fact implement that function, forcing the user of that class to do so, I make this function pure virtual in <code>ClassB</code>.</p>
  
  <p>Is this acceptable? Nothing will "break" if I take a non-pure virtual function, make it pure, then make it non-pure again in <code>ClassC</code> ?</p>