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)

Fonctions Modèles

Les Templates (Modèles) permettent d'écrire du code générique en C++. Grâce aux modèles, nous pouvons définir des fonctions ou des classes qui opèrent sur des paramètres de type générique, laissant le compilateur générer le code réel pour les types spécifiques requis.

Définition d'une fonction template

Pour définir une fonction template, nous faisons précéder la définition de la fonction du mot-clé template, suivi de la liste des paramètres de type entourés de chevrons <>. On utilise généralement typename ou class pour déclarer un type générique.

Code
// T è il parametro di tipo generico
template <typename T>
T add(T a, T b) {
    return a + b;
}

Appel de fonction et résolution de surcharge (Overload Resolution)

Lorsque nous appelons la fonction, nous pouvons spécifier explicitement le type entre chevrons :

Code
int res1 = add<int>(5, 10);
double res2 = add<double>(3.14, 2.71);

Cependant, le compilateur C++ est généralement capable de déduire le type automatiquement à partir des paramètres passés en entrée (Template Argument Deduction) :

Code
int res1 = add(5, 10); // Le compilateur déduit que T est un int

À vous de jouer

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

Définissez une fonction template appelée myMax qui accepte deux paramètres du type générique T et renvoie le plus grand des deux.

Chargement de l'éditeur…
Afficher l'indice

Commencez par écrire `template <typename T>` suivi de la signature `T myMax(T a, T b)`.

Solution disponible après 3 tentatives

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

Écrivez une fonction template printPair qui accepte deux paramètres de types génériques différents T1 et T2 et affiche à l'écran les deux arguments séparés par un espace à l'aide de std::cout.

Chargement de l'éditeur…
Afficher l'indice

La déclaration du template doit spécifier deux paramètres : `template <typename T1, typename T2>`.

Solution disponible après 3 tentatives