Sdílet prostřednictvím


Ukazatel na implementaci pro zapouzdření při kompilaci (moderní verze jazyka C++)

Stylu pimpl je moderní technika skrýt implementaci minimalizovat spojovacího zařízení a k oddělení rozhraní C++.Pimpl je zkratka pro "ukazatel na provedení." Již mohou znát pojem, ale znáte jiné názvy jako Cheshiru kočka nebo Firewall kompilátoru idiomu.

Proč používat pimpl?

Zde je, jak zlepšit životní cyklus vývoje softwaru pimpl idiomu:

  • Minimalizace závislosti při kompilaci.

  • Oddělení rozhraní a implementace.

  • Přenositelnost.

Záhlaví 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 idiomu vyhýbá cascades sestavení a rozložení křehká objektu.Je vhodný pro (přechodně) oblíbených typů.

Provedení Pimpl

Definovat impl třídy v souboru .cpp.

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

Doporučené postupy

Zvažte, zda chcete přidat podporu pro odkládací specializace vyvolání.

Viz také

Další zdroje

C++ vás vítá zpět (moderní verze jazyka C++)

Referenční dokumentace jazyka C++

Standardní knihovna C++ – referenční dokumentace