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.