Creazione di un'istanza esplicita
È possibile utilizzare l'istanziazione esplicita per creare un'istanza di una classe o di una funzione basata su modelli senza utilizzarla nel codice. Poiché è utile quando si creano file di libreria (.lib
) che usano modelli per la distribuzione, le definizioni di modello non documentate non vengono inserite in file oggetto (.obj
).
Esempi
Questo codice crea in modo esplicito un'istanza MyStack
per int
le variabili e sei elementi:
template class MyStack<int, 6>;
Questa istruzione crea un'istanza di MyStack
senza riservare memoria per un oggetto. Il codice viene generato per tutti i membri.
La riga successiva crea un'istanza solo della funzione membro costruttore:
template MyStack<int, 6>::MyStack( void );
È possibile creare un'istanza esplicita dei modelli di funzione usando un argomento di tipo specifico per redeclare tali modelli, come illustrato nell'esempio nella creazione di istanze del modello di funzione.
È possibile usare la extern
parola chiave per impedire la creazione automatica di istanze dei membri. Ad esempio:
extern template class MyStack<int, 6>;
Analogamente, è possibile contrassegnare i membri specifici come esterni e non istanziati:
extern template MyStack<int, 6>::MyStack( void );
È possibile usare la extern
parola chiave per impedire al compilatore di generare lo stesso codice di creazione di istanze in più di un modulo oggetto. È necessario creare un'istanza del modello di funzione usando i parametri di modello espliciti specificati in almeno un modulo collegato se viene chiamata la funzione. In caso contrario, verrà visualizzato un errore del linker quando il programma viene compilato.
Nota
La extern
parola chiave nella specializzazione si applica solo alle funzioni membro definite al di fuori del corpo della classe . Le funzioni definite all'interno della dichiarazione della classe vengono considerate funzioni inline e ne viene sempre creata un'istanza.
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per