2

私はC++に関する本を扱っており、問題を解決するために、xxxxxx.hファイルでメンバー関数のプロトタイプを宣言し、xxxxxx.cppファイルで関数本体を適切に定義するように常に求められます。.hファイルでメンバー関数を定義することに害や不利な点はありますか?そうでない場合、.cppファイルでそれらを定義することに利点または利点はありますか?

4

2 に答える 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 に答える