title: Virtual inheritance and interfaces
body: <pre><code>class IA
  {
  public:
      virtual void a() = 0;
  };
  
  class A: virtual public IA
  {
  public:
      virtual void a()
      {
      }
  };
  
  class IB: virtual public IA
  {
  public:
      virtual void b() = 0;
  };
  
  class B: virtual public IB, public A
  {
  public:
      virtual void b()
      {
      }
  };
  </code></pre>
  
  <p>Do you always inherit your interfaces as virtual as I do above? If not, how would you impement the above code? </p>