Passer au contenu principal
eLearner.app
Module 8 · Leçon 1 sur 217/18 dans le cours~12 min
Leçons du module (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.

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

Exercice#cpp.m8.l1.e1
Tentatives : 0Chargement…

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

Chargement de l'éditeur…
Afficher l'indice

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

Solution disponible après 3 tentatives

Exercice#cpp.m8.l1.e2
Tentatives : 0Chargement…

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.

Chargement de l'éditeur…
Afficher l'indice

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

Solution disponible après 3 tentatives