title: Difference between include directive and forward declaration in C++
body: <p>I must refactor an old code. One of its problems is that it exceeds on useless 'includes'. In the same project, I've seen the following syntax:</p>
  
  <pre><code>#include &lt;AnyClass&gt; //A system header
  #include "AnotherAnyClass" //A application header
  
  class AnotherClass;
  
  class Class : public OneMoreClass
  {
  
  public:
      explicit Class();
      ~Class();
  
  private:
      AnotherClass *m_anotherClass;
  
  }
  </code></pre>
  
  <p>I'd like to figure out:</p>
  
  <ol>
  <li>What are the differences between a 'include "Class"' and a 'class Class'?</li>
  <li>When should the second method be used and how?</li>
  </ol>