Freigeben über


pimpl für Compilierungszeitkapselung (Modern C++)

Das pimpl Vorgehensweise ist eine moderne C++-Technik, Implementierung, auszublenden Kopplung zu minimieren und Schnittstellen zu trennen. Pimpl ist unmittelbar für "Zeiger der Implementierung." Sie bereits mit dem Konzept vertraut sein jedoch kennen kann es durch andere Namen wie Cheshire-Katzen- oder -Compiler-Firewallidiom.

Warum Verwendung pimpl?

Im Folgenden wird gezeigt, wie das pimpl Vorgehensweise den Lebenszyklus der Softwareentwicklung verbessern kann:

  • Reduzierung von Kompilierungsabhängigkeiten.

  • Trennung der Schnittstelle und der Implementierung.

  • Portabilität.

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

Pimpl-Implementierung

Definieren Sie die impl-Klasse in die 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 nicht-auslösende Unterstützung für Austauschspezialisierung hinzufügt.

Siehe auch

Weitere Ressourcen

Willkommen zurück bei C++ (Modern C++)

C++-Sprachreferenz

C++-Standardbibliotheksreferenz