title: Interfaces, absolutly nothing other then pure virtual functions, or...?
body: <p>Every time I read about interfaces, it is mentioned that it hasn't have any data members or implementation what so ever.</p>
  
  <p>But when I see code with interfaces, they have both.</p>
  
  <pre><code>class IInterface
  {
  public:
      IInterface(){}
      virtual ~IInterface(){}
      int getInt(){ return m_int; }
      virtual void Boo() = 0;
      int m_int;
  };
  
  class cInterface : public IInterface
  {
  public:
      virtual void    Boo()
                      {
                          printf( "defined in .cpp for readability\n" );
                      };
  };
  
  class cFoo : public cInterface
  {
  };
  </code></pre>
  
  <p>(Almost) never I see them in a source file but only headers.</p>
  
  <p>How strictly is the term used and if the above isn't an interface, how is it called?</p>
  
  <p>Does it reflect the usage of cInterface/cFoo when using it as IInterface*?</p>
  
  <pre><code>...
  cFoo foo;
  IInterface* object = &amp;foo;
  object-&gt;Boo();
  ...
  </code></pre>