title: C++ include header conventions
body: <p>Suppose I have a file X.h which defines  a class X, whose methods are implemented in X.cc.
  The file X.h includes a file Y.h because it needs Y to define class X. In X.cc, we can refer
  to Y because X.h has already included Y.h. Should I still include Y.h in X.cc ? </p>
  
  <p>I understand that I don't need to and I can depend on header guards to prevent multiple inclusions.
  But on the one hand, including Y.h makes X.cc a little more independent of X.h  (can't be
  completely independent  of course). What is the accepted practice?</p>
  
  <p>Another example: including <code>&lt;iostream&gt;</code> in both .h and .cc files. I see some people do this
  and some don't.</p>