title: Pure virtual methods in derived abstract class
body: <p>Say we have this:</p>
  
  <pre><code>class A
  {
     public:
     virtual void foo() = 0;
  };
  
  class B: public A
  {
     public:
     virtual void foo() = 0;
  };
  </code></pre>
  
  <p>The compiler throws no error, I guess its because B is also an abstract class and as such it does not have to implement <code>foo</code> from A.
  But what does such a construct mean?</p>
  
  <p>1) Does <code>foo</code> from B hide <code>foo</code> from A?</p>
  
  <p>2) The first class which inherits from B and is not an abstract class, does it have to provide two implementations like:</p>
  
  <pre><code>class C: public B
  {
     public:
     virtual void A::foo() {};
     virtual void B::foo() {};
  };
  </code></pre>
  
  <p>The compiler only complains if the implementation of <code>B::foo()</code> is missing, but it does not complain about a missing <code>A::foo()</code>.</p>
  
  <p>All in all: is this a way to hide pure virtual methods?</p>