私はC++に関する本を扱っており、問題を解決するために、xxxxxx.hファイルでメンバー関数のプロトタイプを宣言し、xxxxxx.cppファイルで関数本体を適切に定義するように常に求められます。.hファイルでメンバー関数を定義することに害や不利な点はありますか?そうでない場合、.cppファイルでそれらを定義することに利点または利点はありますか?
1277 次
2 に答える
3
ヘッダーでメソッドを定義する場合は、inline
複数の定義を防ぐために、メソッドをクラス定義としてマークするか、クラス定義内で定義する必要があります。
//A.h
class A
{
void f()
{
}
void g();
};
inline void A::g()
{
};
それ以外は、コーディングスタイルの問題です。クラスを操作するためのインターフェースのみを提供し、実装の詳細を抽象化するために、通常はヘッダーをクリーンに保ちます。
一般的。ヘッダー(テンプレート)で関数を定義する必要がある場合や、(コンパイラーの最適化を改善するために)必要な場合があります。
于 2012-08-10T06:16:53.733 に答える
3
常にコードを.h
ファイルに書き込む場合、などの技術を実行することはできませんforward declaration
。ヘッダーにコードを記述している場合は前方宣言を使用できないため、を解決することはできませんcross dependencies
。
したがって、必要なものすべてをファイルに含める必要があり.h
ます。このファイルを他のファイルに含めると、すでに含まれているすべてのものが含まれます。したがって、コードに小さな変更を加えると、多くの場合、ほぼ完全に再コンパイルされます。
また、実装ではなく.h
、クラスのインターフェイスが表示されることを期待しているため、ファイル内のコードを読み取るのは困難です。.h
于 2012-08-10T06:18:35.833 に答える