title: Forward declaration / when best to include headers?
body: <p>I'm pretty clear on when I can/can't use forward declaration but I'm still not sure about one thing.</p>
  
  <p>Let's say I know that I have to include a header sooner or later to de-reference an object of class A.
  I'm not clear on whether it's more efficient to do something like..</p>
  
  <pre><code>class A;
  class B
  {
     A* a;
     void DoSomethingWithA();
  };
  </code></pre>
  
  <p>and then in the cpp have something like..</p>
  
  <pre><code>#include "A.hpp"
  void B::DoSomethingWithA()
  {
     a-&gt;FunctionOfA();
  }
  </code></pre>
  
  <p>Or might I as well just include A's header in B's header file in the first place?
  If the former is more efficient then I'd appreciate it if someone clearly explained why as I suspect it has something to do with the compilation process which I could always do with learning more about.</p>