Skip to main content
eLearner.app
Module 8 · Lesson 1 of 217/18 in the course~12 min
Module lessons (1/2)

Function Templates

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.

Code
// 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:

Code
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):

Code
int res1 = add(5, 10); // Il compilatore deduce che T è int

Prova tu

Exercise#cpp.m8.l1.e1
Attempts: 0Loading…

Definisci una funzione template chiamata myMax che accetta due parametri del tipo generico T e ritorna il maggiore tra i due.

Loading editor…
Show hint

Inizia scrivendo `template <typename T>` seguito dalla firma `T myMax(T a, T b)`.

Solution available after 3 attempts

Exercise#cpp.m8.l1.e2
Attempts: 0Loading…

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.

Loading editor…
Show hint

La dichiarazione del template deve specificare due parametri: `template <typename T1, typename T2>`.

Solution available after 3 attempts