#includeについて(1)

今回はC/C++の話です。
経験の浅いプログラマがたまにやってしまうのがヘッダファイル上でヘッダファイルを無配慮に#includeしてしまうことです。
これは恐らく#includeディレクティブへの理解が「コンパイルを通すためのおまじない」くらいで止まってしまっていることに起因するかと思います。
#includeディレクティブは、指定されたファイルの内容をディレクティブがある位置に含める(include)するようにコンパイラに指示します。
例えばあるファイルに

#include "hoge.h"

と記述した場合、コンパイラはその場所にhoge.hの内容が書かれていると解釈します。
このことを知っていれば、ヘッダファイル上でヘッダファイルをインクルードすることのデメリットが理解できると思います。
ヘッダファイル内で他のファイルで宣言されているクラス・変数などを参照したい場合は、前方宣言を利用することで#includeせずにコンパイルを通すことが可能ですので極力そちらで代用しましょう。
ただ、現実的にはヘッダファイルからヘッダファイルへのインクルードを一切禁止することは難しいと思います。
どの程度許容するかはプロジェクトの方針次第ではあると思うのですが、少なくとも前方宣言で対応できるものに関しては無配慮に#includeしないことを心掛けてください。
次の記事ではヘッダファイル以外を#includeするケースを紹介します。