C ++では、実行可能ファイル(Windowsでは.exe、通常Linuxでは拡張子なし)、ライブラリファイル(.libまたは.a)、または共有ライブラリ(.dllまたは.so)を、目的に応じて作成できます。 。
ライブラリを提供する場合は、クラス宣言を含むヘッダーファイルも提供する必要があります。詳細についてあまり詳しく説明したくない場合は、ヘッダーファイル内の実装への単なるポインタである「実装」クラスを作成できます。実際の実装は、の所有者としてのみ利用できます。ソース。
詳細については、ThomasMatthewsが提案した「PIMPL」を検索する必要があります。これは「PointertoIMPLementationclass」の略です。基本的に、「パブリック」クラスは、他の人に見てもらいたい関数を提供する単なるシェルであり、その中の実装クラスはすべての大変な作業を行います。
簡単な例
ヘッダーファイル:
// Forward declaration of the implementation class.
class double_it_impl;
// Class that stores an integer, and doubles it each time you
// call doubling().
class Public_double_it
{
public:
public_double_it(int x); // COnstructor.
int doubling(); // Function d
private:
double_it_impl *pImpl;
};
ソースまたはプライベートヘッダーファイルで、実際の実装を宣言します。
class double_it_impl
{
public:
double_it_impl(int x) : m_x = x; {};
int doubling() { m_x *= 2; return m_x; }
}
public_double_it::public_double_it(int x)
{
pImpl = new public_double_it(x);
}
int public_double_it::doubling()
{
return pImpl->doubling();
}
これで、実装クラスに何が含まれているのか、どのように機能するのかがわかりません。もちろん、これは非常に簡単な例ですが、それがアイデアを伝えてくれることを願っています。