Accueil
|_Accueil Langage C++ |_Définition de templates |_Fonction template |_Classe template |_Utilisation du mot clé typename |_Spécialisation de templates |_Utilisation de types traits |_Les nouveautés C++ 2011 |
Définition de templates en C++En C++, la programmation générique (ou généricité) se met en oeuvre via la syntaxe des templates. La programmation générique permet de définir des modèles de fonctions ou des modèles de classes sans que les types de données manipulés par ces modèle soit encore connus. C'est lors de l'utilisation de ces modèles que les types de données seront fixés : on parle avec de spécialisation, dans le sens ou lors va utiliser ces modèles pour des types de données bien précis.
Comme nous venons de le dire, plusieurs éléments peuvent être définis de manière générique. Nous pouvons définir des fonctions génériques : par
exemple l'algorithme d'un calcul de minimum peut être codé une fois, quelque soit les types de données sur lesquels ont souhaite appliquer cette
fonction ( A titre d'information, sachez qu'il ne serait pas forcément un bonne idée de recoder une classe génériques pour définir une structure de données telle qu'une liste chaînée ou un tableau dynamique. Effectivement, il existe une librairie qu'il réalise déjà tout cela et plus encore : cette librairie se nomme STL (Standard Template Library). En fait cette librairie a été standardisée depuis C++98. La STL fait donc partie de la librairie standard C++, livrée par défaut avec tous les principaux compilateurs modernes.
Dernier points : sachez qu'un modèle de code ne produit pas directement de code machine. Ce n'est qu'à l'utilisation de cet élément que les types
utilisés pourront être spécialisés et que la fonction (ou la classe) associée pourra être produite. Il en découle une règle de syntaxe un peu
particulière : tous les éléments génériques proposés par une librairie template réutilisable devront impérativement être définir dans un fichier
d'entête ( Etudions maintenant quelques cas particuliers de templates : |
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :