序文
C++ で大規模なプログラムを作成する場合、すべてのコードを 1 つのファイルに含めると煩雑になり、保守が困難になる可能性があります。コードをより適切に整理し、保守性を向上させるために、個別コンパイルの概念を使用できます。
文章
私のcircle.hファイル
#pragma once
#include<iostream>
using namespace std;
class circle
{
public:
void set_R(int len);
private:
int R;
};
私のcircle.cppファイル
#include"circle.h"
void circle::set_R(int len)
{
R = len;
}
私のmain.cppファイル
#pragma once
#include<iostream>
using namespace std;
#include"circle.h"
int main()
{
circle one;
one.set_R(10);
}
説明する
ファイルベースの実装の主なアイデアは、クラスの宣言と実装を別のファイルに置くことです。これにより、コードの構造がきれいに保たれ、各ファイルの責任がより明確になります。この例では、circle.h、circle.cpp、main.cpp の 3 つのファイルを使用して、分割ファイルの実装を示しました。
Circle.h: これはヘッダー ファイルで、通常はクラスの宣言が含まれています。ここでは、circleクラスを定義し、その中でメンバ関数set_Rとメンバ変数Rを宣言しています。ヘッダー ファイルには、二重インクルードを回避しながらヘッダー ファイル内の宣言を他のファイルで使用するために必要な #include ディレクティブも含まれています。
Circle.cpp: ヘッダー ファイルで宣言されたメンバー関数を実装するソース ファイルです。ここでは、circle::set_R 関数が実装されており、パラメーターの値が R メンバー変数に割り当てられます。実装を別のソース ファイルに分割することで、ヘッダー ファイルで実装の詳細が多すぎることが回避されます。
main.cpp: これは、実際に円オブジェクトを作成して使用するメインのプログラム ファイルです。ここでは、circle クラスの宣言を使用できるように、circle.h ヘッダー ファイルがインクルードされています。次に、main 関数で円オブジェクトが作成され、その set_R 関数が呼び出されて半径値が設定されます。
サブファイル実装の利点は次のとおりです。
モジュール性: 各ファイルは特定の機能に焦点を当てており、コードの理解と保守が容易になります。
再利用性: ヘッダー ファイルを組み込み、対応するソース ファイルをコンパイルすることで、クラスを他のプロジェクトで簡単に再利用できます。
コンパイル時間の最適化: 1 つのソース ファイルを変更すると、他のソース ファイルを再コンパイルする必要がなくなり、コンパイル時間が短縮されます。
実装の詳細の非表示: 必要なインターフェイスのみがヘッダー ファイルで公開されるため、クラスの実装の詳細が非表示になり、カプセル化が強化されます。
結論として、分割ファイルの実装は、より組織化され保守しやすいコードを作成するのに役立つ、優れたプログラミング手法です。