title: Force all classes to implement / override a 'pure virtual' method in multi-level inheritance hierarchy
body: <p>In C++ why the <em>pure</em> <code>virtual</code> method mandates its compulsory overriding <strong>only</strong> to its immediate children (for object creation), but not to the grand children and so on ?</p>
  
  <pre><code>struct B {
    virtual void foo () = 0;
  };
  struct D : B {
    virtual void foo () { ... };
  };
  
  struct DD : D {
    // ok! ... if 'B::foo' is not overridden; it will use 'D::foo' implicitly
  };
  </code></pre>
  
  <p>I don't see any big deal in leaving this feature out.<br>
  For example, at language design point of view, it could have been possible that, <code>struct DD</code> is allowed to use <code>D::foo</code> only if it has some explicit statement like <code>using D::foo;</code>. Otherwise it has to override <code>foo</code> compulsory.</p>
  
  <p>Is there any practical way of having this effect in C++?</p>