何年もの間、私は標準的な方法でC ++をコーディングしてきました。ヘッダー・ファイル.hppのクラス宣言と、ソース.cppファイルの関数定義を使用しています。最近、私は新しい会社に引っ越しました。コード(ブーストコーディングスタイルの影響を受けているようです)は、ヘッダーファイルをインクルードしてオブジェクト/プログラムバイナリを作成するために、1つの短い.cppファイルを含む.hppファイルで完全にコーディングされています。
オブジェクトごとに.hppおよび.cppファイルを作成するのではなく、ヘッダーファイルにコードを作成することの長所と短所は何でしょうか。これは、プロジェクトがプログラムバイナリにリンクされる共通ライブラリを作成しないことを前提としていますが、代わりに各プログラムバイナリはヘッダーファイル(および1つのソース.cppファイル)の合計から構築されます。これはC++の新しいトレンドですか?
たとえば、テンプレートオブジェクトはヘッダーのみである必要がありますが、非テンプレートクラスをヘッダーファイルに配置してから、これらの一般的なプロジェクトクラスをバイナリにインクルードすることをお勧めします。新しいコードベースを最初から作成していると仮定すると、リンクが少なくなることを意味します。つまり、リンクエラーが少なくなり、ビルドが高速になる可能性があります。プリコンパイル済みヘッダー機能は、ヘッダーファイルを使用するとビルド時間が短縮されることも意味しますか?または、共通の共有ライブラリオブジェクトをリンクするのではなく、バイナリを作成するときにすべてのコードをコンパイルする必要があるため、ビルド時間が長くなりますか?
また、ここではAPIを記述していないことに注意してください(この場合、pimplイディオムのようなものは、実装を非表示にすることで柔軟性を高めます)。顧客サイトで実行するプログラムを記述しています。
前もって感謝します、