Vous êtes sur la page 1sur 4

Cours de C++

Les templates

Les templates

Les templates (appeles aussi modles ou patrons) reprsentent une technique favorisant la rutilisation et la spcialisation des fonctions et des classes. Les templates utilisent un type paramtr (ou fictif) qui reprsente le type de donne qui sera choisi (ou instanci) lutilisation du modle . 1. Les fonctions templates

Une fonction template permet de dfinir une fonction qui ralisera le mme traitement pour des types de donnes diffrents (type de donne paramtr qui sera connu au moment de lappel de la fonction). 1.1. syntaxe

template <arguments du template> type fonction (arguments) { . } Ou


template <arguments du template> type fonction(arguments) { .. }

Mohamed ELWAFIQ

107

Chapitre 11

Cours de C++

Les templates

1.2.

Description

- argument du template : scrit class type1, type2, o type1,type2...reprsentent le type paramtr (par convention on prend la lettre T , U ). - La fonction dclare peut utiliser ensuite le ou les types fictifs. 1.3. Exemple

Les fonctions surcharges suivantes : void affiche (short v) { cout <<Valeur : <<v<<endl; } //---------------------------void affiche (float v) { cout << Valeur : <<v<<endl; } //-------------------------------void affiche (double v) { cout <<Valeur : <<v<<endl; } peuvent tre suivante : remplaces par la fonction modle

template <class T> void affiche (T v) { cout << Valeur : <<v<<endl; } Et on peut faire des appels tels que :

Mohamed ELWAFIQ

108

Chapitre 11

Cours de C++

Les templates

void main () { short n=15 ; float x=3.7 ; double y=5.14 ; affiche(n) ; affiche(34) ; affiche(x) ; affiche(5.8) ; affiche(y) ; affiche(A) ; affiche(BONJOUR) ; } Remarque Une fonction arguments : template peut employer plusieurs

template <class T, class U> void affiche(T v1, U v2) { cout <<Valeur 1 : <<v1<<endl; cout <<Valeur 2 : <<v2<<endl; } Exercice Dfinir une fonction template ou modle appele max dont lobjectif est de renvoyer le plus grand des deux lments pass en argument. 2. Les classes templates

2.1. Syntaxe template <arguments du template> class nom de la classe { .. ; }

Mohamed ELWAFIQ

109

Chapitre 11

Cours de C++

Les templates

2.2. Description C++ impose pour dfinir le corps des fonctions membres demployer la syntaxe suivante : template <arguments du template> class nom de la classe <nom des arguments> :: fonction(arguments) { . } - Une classe modle ou template peut galement contenir des fonctions membres qui nutilisent pas les types paramtrs. Cependant, mme dans ce cas, le corps de la fonction doit respecter la contrainte lie au nom complet de la fonction membre. Exercice Ecrire un programme global partir des dfinitions suivantes : template <class T > class tableau { T valeurs[10]; int indice ; public : tableau() ; void ajouter(T v) ; T renvoyer (int i) ; int nombre_elements() ; };

Mohamed ELWAFIQ

110

Chapitre 11

Vous aimerez peut-être aussi