title: Include in header file vs. forward-declare and include in .cpp
body: <p>I have a class B, and I want to call members form class A. So:</p>
  
  <p>1.</p>
  
  <pre><code>//A.h    
  class B; 
  class A 
  { 
  private:
      B* m_p; 
  }; 
  
  //a.cpp
  #include "B.h"
  </code></pre>
  
  <p>2.</p>
  
  <pre><code>// A.h
  #include "B.h"
  
  class A 
  { 
  private: 
      B * impl_; 
  }; 
  </code></pre>
  
  <p>which way is better and is this two similar when a small project with not too much dependence involves?</p>