「PIMPL」イディオムの利点
「実装へのポインタ」(PIMPL) イディオムでは、パブリック クラスが内部構造をカプセル化します。またはクラス (「実装」) は、外部ユーザーから隠蔽される実装を提供します。この手法にはいくつかの利点があります。
「Pimpl クラス」の設計上の考慮事項
PIMPL 間実装を分離するため、パブリック クラスの代わりに PIMPL クラスにパブリック メソッドを配置することは直観に反しているように思えるかもしれません。ただし、このアプローチでは、
分離実装による実装例
以下のコード例を考えてみましょう。 )」の実装は PIMPL 内に含まれていますclass:
// header file: class Cat { private: class CatImpl; // PIMPL class CatImpl* cat_; // Pointer to PIMPL public: Cat(); // Constructor ~Cat(); // Destructor Purr(); // Public method }; // CPP file: #include "cat.h" class Cat::CatImpl { public: Purr(); }; Cat::Cat() { cat_ = new CatImpl; } Cat::~Cat() { delete cat_; } void Cat::Purr() { cat_->Purr(); } void CatImpl::Purr() { // Actual implementation of "Purr()" }
この例では、パブリック クラス "Cat" が "CatImpl" オブジェクトの作成と破棄を処理しますが、"Purr()" の実装を PIMPL クラスに委任します。このアプローチにより、「Purr()」実装の詳細が外部ユーザーから隠蔽されると同時に、「Cat」クラスと対話するための安定したインターフェースが提供されます。
以上がC で PIMPL イディオムを使用する利点と考慮事項は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。