Rappels
Introduite par la version 3, la notion de patron de fonctions permet de définir ce qu’on
nomme souvent des « fonctions génériques ». Plus précisément, à l’aide d’une unique
définition comportant des « paramètres de type », on décrit toute une famille de
fonctions ; le compilateur « fabrique » (on dit aussi « instancie ») la ou les fonctions
nécessaires à la demande (on nomme souvent ces instances « fonctions patron »).
La version 3 limitait les paramètres d’un patron de fonctions à des paramètres de type.
La norme ANSI a, en outre, introduit les « paramètres expression ».
Définition d’un patron de fonctions
On précise les paramètres (muets) de type, en faisant précéder chacun du mot
(relativement arbitraire) class sous la forme template . La
définition de la fonction est classique, hormis le fait que les paramètres muets de type
peuvent être employés n’importe où un type effectif est permis.
Par exemple :
template void fct (T a, T * b, U c)
{
T x ; // variable locale x de type T
U * adr ; // variable locale adr de type U *
...
adr = new T [10] ; // allocation tableau de 10 éléments de type T
...
n = sizeof (T) ; // une instruction utilisant le type T
...
}
Une instruction telle que (T désignant un type quelconque) :
T x (3) ;
est légale même si T n'est pas un type classe ; dans ce dernier cas, elle est simplement
équivalente à :
T x = 3 ;
Instanciation d’une fonction patron
301
Précédent

- 302/398

Suivant