次の方法で共有


コンパイル時のカプセル化の Pimpl (Modern C++)

pimpl の表現は 実装を非結合度を最小化し、インターフェイスを区切る最新の C++ の手法です。 Pimpl は「実装へのポインターには短いです」。既に概念について理解チェシャー Cat またはコンパイラ ファイアウォール表現などの名前で指定がわからない場合があります。

理由 pimpl を使用します。

ここで pimpl の表現がソフトウェア開発ライフサイクルを向上する方法です:

  • コンパイル依存関係の最小化。

  • インターフェイスおよび実装の分離。

  • 移植性。

Pimpl のヘッダー

// my_class.h
class my_class {
   //  ... all public and protected stuff goes here ...
private:
   class impl; unique_ptr<impl> pimpl; // opaque type here
};

pimpl の表現はリビルドのカスケードと脆弱なオブジェクトのレイアウトを回避できます。 これは (他動詞) として使用される型の場合に適しています。

Pimpl の実装

.cpp ファイルで impl クラスを定義します。

// my_class.cpp
class my_class::impl {  // defined privately here
  // ... all private data and functions: all of these
  //     can now change without recompiling callers ...
};
my_class::my_class(): pimpl( new impl )
{
  // ... set impl values ... 
}

ベスト プラクティス

検討非スローする交換の特殊化のサポートを追加するかどうか。

参照

その他の技術情報

C++ へようこそ (Modern C++)

C++ 言語リファレンス

C++ 標準ライブラリ リファレンス