Template (programmazione)
Da Wikipedia, l'enciclopedia libera.
Il termine inglese "template" (modello, schema) viene utilizzato nel gergo della programmazione informatica per definire la funzionalità del linguaggio C++ che permette di scrivere codice a prescindere dal tipo di dato che verrà effettivamente usato in esecuzione. Ovvero, i template sono il mezzo con cui il C++ supporta la programmazione generica.
La Standard Template Library (STL) del C++ mette a disposizione del programmatore molte utili funzionalità all'interno di una elegante struttura di template.
Ci sono due tipi di template in C++: le funzioni template e le classi template.
Una funzione template si comporta come una funzione che può accettare argomenti, e ritornare valori, di tipo generico. Per esempio, la Standard Template Library mette a dispozione la funzione template max(x, y)
che ritorna x o y a seconda di quale sia il più grande, che potrebbe essere definita in questo modo:
template <typename T> T max(T x, T y) { if (x < y) return y; else return x; }
La chiamata alla funzione max
non differisce da quella ad una normale funzione:
cout << max(3, 7); // scrive 7 sull'output
Il compilatore esamina gli argomenti, determina che si tratta di una chiamata a max(int, int)
e instanzia una versione della funzione dove il tipo int
viene utilizzato al posto di T
.
Questo processo funziona se gli argomenti x
e y
sono interi, stringhe, o qualunque altro tipo per il quale ha senso dire "x < y
". Nel caso si usi un proprio tipo di dati, è necessario definire il significato di <
per quel tipo per poter usare max(x, y)
.
Come controesempio, consideriamo il tipo standard complex
, che non definisce l'operatore <
in quanto i numeri complessi non possono essere ordinati. Dunque se scrivessimo del codice che tentasse di chiamare la funzione template max(x, y)
, dove x e y siano di tipo complex
, otterremmo un errore di compilazione.
Una classe template estende il medesimo concetto alle classi.