Megosztás a következőn keresztül:


Pimpl Compile-Time enkapszulációhoz (Modern C++)

A pimpl idiom egy modern C++ technika, amely elrejti a megvalósítást, minimalizálja a csatolást, és elkülöníti a interfészeket. A Pimpl az "implementációra mutató mutató" rövidítése. Lehet, hogy már ismeri a fogalmat, de más elnevezései, mint a Cheshire Cat vagy a Compiler Firewall idiomák alatt.

Miért használjunk pimpl-t?

A pimpl idiom javíthatja a szoftverfejlesztési életciklust:

  • Fordítási függőségek minimalizálása.

  • Az interfész és a megvalósítás elkülönítése.

  • Hordozhatóság.

Pimpl fejléc

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

A pimpl idiom elkerüli a kaszkádok és a törékeny objektumelrendezések újraépítését. Jól használható (tranzitív) népszerű típusokhoz.

A Pimpl implementálása

Adja meg az osztályt impl a .cpp fájlban.

// 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 ...
}

Ajánlott eljárások

Fontolja meg, hogy támogatja-e a nem dobó swap specializációt.

Lásd még

Üdvözöljük újra a C++-ban
C++ nyelvi referencia
C++ standard kódtár