ストリームクラス -- 階層図

ストリームクラスに対する自分の理解がいまいちなので、整理するために階層図を作ってみた。 元ネタは、『C++ 標準ライブラリ チュートリアル&リファレンス』 (アスキー) である。 とりあえずは骨格のみ。メソッドなどについては、おいおい肉付けしていく予定。

まずは、ストリームクラスの階層図。


太字にした basic_xxx は、 後ろに <> が付いていることからも分かるようにテンプレートクラスである。 それを char および wchar_t で特殊化したものが、istreamwistream などになる、というわけだ。

ボックスの近くに書いてある < …… > は、 そのクラスを宣言または定義しているヘッダーファイルである。 とくに iosfwd はクラス名だけを宣言しており、 クラスの実体が不要な場合は、 できるかぎり iosfwd だけをインクルードするようにすべきである (iosfwd の fwd は forward の略であろう)。 クラスの実体が不要な場合の例としては、 次のように istream 型の引数を取るような関数を宣言するだけという場合がある。

  void foo( std::istream );  

この場合は、istream がクラス名だということさえ分かっていればよいので、 iosfwd をインクルードするだけで充分である。


次は、ストリームバッファクラスの階層図。


ストリームバッファオブジェクトは、ストリームクラスオブジェクトによって保持され、 実際の入出力が行われるときに処理が移譲される。


初出: 2002年7月1日

C++ ラビリンスの目次へ


ホームページへ / Last modified: 2002-07-01 13:14:00 JST
Created by OKA Toshiyuki < oka-t@fides.dti.ne.jp >