Explizite Instanziierung

Explizite Instanziierung können Sie eine Instanziierung einer auf Vorlagen basierenden Klasse oder Funktion ohne tatsächlich mit sie im Code erstellen.Da dies ist nützlich, wenn Sie Dateien der Bibliothek (.lib) erstellen, die Vorlagen für Verteilung verwenden, werden nicht instanziiert Vorlagendefinitionen nicht in Objektdatei (.obj) - Dateien abgelegt.

Im Folgenden MyStack für int-Variablen explizit instanziiert und sechs Elemente:

template class MyStack<int, 6>;

Diese Anweisung erstellt eine Instanziierung von MyStack , ohne einen Speicher für ein Objekt zu reservieren. Code wird für alle Member generiert.

Das folgende explizit instanziiert nur die Konstruktor Memberfunktion einer:

template MyStack<int, 6>::MyStack( void );

Vorlagen Funktionen können explizit instanziiert werden, indem sie mit einem bestimmten Typargument neu deklariert, wie im Beispiel in Funktions-Vorlagen-Instanziierungangezeigt.

Microsoft-spezifisch

Sie können das extern-Schlüsselwort verwenden, um die automatische Instanziierung von Membern zu verhindern.Beispiele:

extern template class MyStack<int, 6>;

Entsprechend können Sie bestimmte Member als nicht instanziiert und extern gekennzeichnet:

extern template MyStack<int, 6>::MyStack( void );
HinweisHinweis

Das extern-Schlüsselwort in der Spezialisierung gilt nur für die Memberfunktionen auf, die sich außerhalb des Textkörpers der Klasse definiert sind.Die Funktionen, die in der Klassendeklaration definiert werden, gelten als Inlinefunktionen und werden immer instanziiert.

Siehe auch

Referenz

Funktionsvorlagen