title: C++ Is it reasonable having an interface class inherits from a concrete class?
body: <p>In C++ is it reasonable having an interface class inherits from a concrete class? Is this bad deign smell?</p>
  
  <p>I have an interface which defines a behaviour, and a inherited class which defines an implementation.</p>
  
  <p>Now I have another class and I want to state <em>"Whoever inherits from this class need to specify behavior <strong>X</strong>, and defines this behavior <strong>Y</strong> which alread has a valid default implementation"</em>.</p>
  
  <p>Is it correct practice this kind of implementation? I'm confused about this abstract/concrete mixing.</p>
  
  <pre><code>class IBase
  {
  public:
     virtual ~IBase(){}
  
     virtual void method1() = 0;
  }
  
  class ConcreteBase : IBase
  {
  public:
    ConcreteBase(){}
  
    void method1() override { // some impl; }
  }
  
  class ISpecialized : ConcreteBase
  {
  public:
     // Here I don't need virtual destructor
  
     void method2() = 0;
  }
  
  class ConcreteSpecialized : ISpecialized
  {
  public:
     ConcreteSpecialized(){}
  
     void method2() override { // some impl. }
  }
  </code></pre>