Exactement
comme pour les fonctions, une classe
générique
est paramétrée (mot-clé template)
par un
nom
de type prédéfini (int, float ...) ou de classe
créée
par le programmeur.
Exemple:
template
<class T>
class
Pile {
public:
Pile();
~Pile();
void
push(T x);
void
pop();
}
template
<class T>
Pile<T>::Pile()
{
//
une certaine implémentation
}
template
<class T>
void
Pile<T>::push(T x)
{
//
une certaine implémentation
}
On
aura ainsi construit une classe pile pouvant
contenir
divers types d'éléments.
Utilisation
par
int main() {
Pile<int>
p; int i=7;
//
on vient de créer une pile d'entiers
p.push(5);
p.push(3); p.push(i);
p.pop();
}
Il existe une librairie de templates, la librairie STL (pour Standard Template Library), contenant des implémentations des structures de données usuelles (comme Pile ici).
retour vers la généricité pour les fonctions