Freigeben über


Pimpl für Kompilierzeitkapselung modernes (C++)

Das pimpl Ausdrucksweise ist eine moderne C++-Technik, Implementierung auszublenden, Kopplung zu minimieren und Schnittstellen zu trennen.Pimpl kurz ist für "Zeiger zur Implementierung". Sie bereits mit dem Konzept vertraut sein jedoch wissen möglicherweise von anderen Namen wie Cheshire-Katzen- oder -Compiler-Firewallidiom.

Gründe für die Verwendung von pimpl?

Im Folgenden wird gezeigt, wie das pimpl Ausdrucksweise des Lebenszyklus der Softwareentwicklung verbessern kann:

  • Reduzierung von Kompilierungsabhängigkeiten.

  • Trennung der Schnittstelle und Implementierung.

  • Portabilität.

Pimpl-Header

// 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 Vorgehensweise vermeidet Wiederaufbauenkaskaden und spröde Objektlayouts.Es ist für (transitiv) oder Typen gut geeignet.

Pimpl-Implementierung

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 Unterstützung für nicht-auslösende Austauschspezialisierung hinzugefügt wird.

Siehe auch

Weitere Ressourcen

Willkommen zurück in C++ modernes (C++)

C++-Sprachreferenz

C++-Standardbibliothek-Referenz