Freigeben über


pimpl für Compilierungszeitkapselung (Modern C++)

Das Pimpl-Idiom ist eine moderne C++-Technik zum Ausblenden der Implementierung, zum Minimieren der Kopplung und zum Trennen von Schnittstellen. Pimpl ist kurz für "Zeiger auf Implementierung". Möglicherweise sind Sie bereits mit dem Konzept vertraut, kennen es aber auch durch andere Namen wie Cheshire Cat oder Compiler Firewall idiom.

Warum Pimpl verwenden?

So kann das Pimpl-Idiom den Lebenszyklus der Softwareentwicklung verbessern:

  • Minimierung der Kompilierungsabhängigkeiten.

  • Trennung von Schnittstellen und Implementierung.

  • Übertragbarkeit:

Pimpl-Kopfzeile

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

Das Pimpl-Idiom vermeidet die Neuerstellung von Kaskaden und spröden Objektlayouts. Es eignet sich gut für (transitiv) beliebte Typen.

Implementierung von Pimpl

Definieren Sie die impl Klasse in der .cpp Datei.

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

Bewährte Methoden

Überlegen Sie, ob Sie Unterstützung für nicht ausgelöste Swap-Spezialisierungen hinzufügen möchten.

Siehe auch

Willkommen zurück bei C++
C++-Programmiersprachenreferenz
C++-Standardbibliothek