2011-08-15 6 views
2

可能性の重複:
In C++ why have header files and cpp files?ヘッダーファイルのクラス実装は==悪いスタイルですか?

ヘッダー・ファイル内の全クラスC++を書き込むことが得策である場合、私は不思議でしたか? javaがそのoopプログラミングを行うのと同様の方法でクラスをインクルードするためにincludeを使用します。それは悪いスタイルですか?誰も私に "良い" C++のoopスタイルガイドを教えてもらえますか?また、テンプレートプログラミングが、C++で経験を積んだ人について話すとき、彼らが本当に意味するものであるかどうかも疑問です。

答えて

3

ヘッダーファイルに関数定義を含めると、いくつかのノックオン効果があり、一般的には回避されます。このように定義された関数は、インライン展開される可能性が高く、パフォーマンスに影響を与える実行可能ファイルのサイズが増加します(肯定的または否定的な方法で)。また、これを行うとビルド時間が長くなる可能性があります。すべての定義を追加すると、追加のファイルなどを含める必要があります。

一般的な方法は、クラスインターフェイスをヘッダファイル(.h)実装ファイル(.cpp)への実装。

場合によっては、テンプレートの場合のように、すべてのコードを使用できることが必要です。 STLはテンプレートを大量に使用し、関数の実装は必要に応じてヘッダファイルに含まれています。

+0

すべてが正しいです。メモとして、テンプレート定義をヘッダーのクラス定義の下に置くことが常に推奨されています(http://www.parashift.com/c++-faq-lite/inline-functions.html#faq-9.7で推奨されています)あなたはまだ宣言/ある程度の分離を定めることができます。 –

+0

ええ、感謝します。 –

+0

一般的なプラクティスは誰ですか?つまりBoostの大半はヘッダーのみです - それは数えられませんか? – ildjarn

2

の.h 入れ定義に入れpublicクラスと関数宣言と.CPPで他のすべて

の.hは、あなたのインターフェイスで、.cppファイルは、あなたの実装です。

関連する問題