Verwendung externer Vorlagen zur Vermeidung der Vorlageninstanziierung (C 11)
Bei der objektorientierten Programmierung spielen Vorlagen eine entscheidende Rolle bei der Bereitstellung allgemeiner Lösungen die mit unterschiedlichen Datentypen arbeiten. Wenn jedoch mehrere Quelldateien Vorlagen mit denselben Parametern instanziieren, kann dies zu mehreren Definitionen und einer längeren Kompilierungszeit führen.
Das Schlüsselwort extern template kann verwendet werden, um dieses Problem zu beheben und unnötige Vorlageninstanziierung zu vermeiden. Es weist den Compiler an, eine bestimmte Vorlagenspezialisierung innerhalb der aktuellen Übersetzungseinheit nicht zu instanziieren. Stattdessen verlässt sich der Compiler darauf, dass die Vorlage in einer anderen Quelldatei oder verknüpften Bibliothek instanziiert wird.
Funktionsvorlagen
Beim Umgang mit Funktionsvorlagen können externe Vorlagen verwendet werden Erzwingen Sie den Ausschluss der expliziten Vorlageninstanziierung. Betrachten Sie beispielsweise den folgenden Codeausschnitt:
// header.h template<typename T> void f(); // source1.cpp #include "header.h" void f<int>(); // Explicit instantiation // source2.cpp #include "header.h" extern template void f<int>(); // Prevents explicit instantiation void g() { f<int>(); }
In diesem Szenario instanziiert source1.cpp explizit f
Klassenvorlagen
Das gleiche Prinzip gilt für Klassenvorlagen. Eine externe Vorlage kann verwendet werden, um mehrere Instanziierungen derselben Vorlagenklasse mit denselben Parametern zu vermeiden. Betrachten Sie das folgende Beispiel:
// header.h template<typename T> class foo { public: void f(); }; // source1.cpp #include "header.h" template class foo<int>; // Explicit instantiation // source2.cpp #include "header.h" extern template class foo<int>; // Prevents explicit instantiation void h() { foo<int> obj; }
Hier verhindert die externe Vorlage in source2.cpp die explizite Instanziierung von foo
Vorteile der Verwendung externer Vorlagen
Die Verwendung externer Vorlagen bietet mehrere Vorteile Vorteile:
Fazit
extern template ist ein leistungsstarkes Schlüsselwort, mit dem Entwickler die Instanziierung von Vorlagen steuern und die Kompilierungszeit optimieren können. Durch eine umsichtige Verwendung können Entwickler sicherstellen, dass Vorlagen effizient genutzt werden und die Fallstricke mehrerer Instanziierungen vermeiden, was zu einer schnelleren Kompilierung und kleineren ausführbaren Dateien führt.
Das obige ist der detaillierte Inhalt vonWie vermeidet „externe Vorlage' die Instanziierung redundanter Vorlagen in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!