Lezioni del modulo (1/2)
Funzioni Template
I Templates (Modelli) consentono di scrivere codice generico in C++. Attraverso i template, possiamo definire funzioni o classi che operano su dei parametri di tipo generici, lasciando che sia il compilatore a generare il codice effettivo per i tipi specifici richiesti.
Definizione di una Funzione Template
Per definire una funzione template, facciamo precedere la definizione della funzione dalla parola chiave template, seguita dall'elenco dei parametri di tipo racchiusi tra parentesi angolari <>. Si usa comunemente typename o class per dichiarare un tipo generico.
// T è il parametro di tipo generico
template <typename T>
T add(T a, T b) {
return a + b;
}
Chiamata di Funzione ed Overload Resolution
Quando richiamiamo la funzione, possiamo specificare esplicitamente il tipo tra parentesi angolari:
int res1 = add<int>(5, 10);
double res2 = add<double>(3.14, 2.71);
Tuttavia, il compilatore C++ è solitamente in grado di dedurre il tipo automaticamente dai parametri passati in ingresso (Template Argument Deduction):
int res1 = add(5, 10); // Il compilatore deduce che T è int
Prova tu
Definisci una funzione template chiamata myMax che accetta due parametri del tipo generico T e ritorna il maggiore tra i due.
Mostra suggerimento
Inizia scrivendo `template <typename T>` seguito dalla firma `T myMax(T a, T b)`.
Soluzione disponibile dopo 3 tentativi
Scrivi una funzione template printPair che accetta due parametri di tipi generici differenti T1 e T2 e stampa a schermo i due argomenti separati da uno spazio usando std::cout.
Mostra suggerimento
La dichiarazione del template deve specificare due parametri: `template <typename T1, typename T2>`.
Soluzione disponibile dopo 3 tentativi