Vidéo: C++ Tutorial for Beginners 40 - Class Templates 2024
La bibliothèque C ++ standard fournit un ensemble complet d'opérations mathématiques, temporelles, d'entrée / sortie et DOS, pour n'en citer que quelques-unes. La plupart des premiers programmes que vous apprenez en tant que débutant utilisent les fonctions de chaîne de caractères définies dans les chaînes de fichiers d'inclusion .
Les types d'arguments pour beaucoup de ces fonctions sont fixes. Par exemple, les deux arguments de strcpy (char *, char *) doivent être un pointeur vers une chaîne de caractères terminée par zéro - rien d'autre n'a de sens.
Certaines fonctions sont applicables à plusieurs types. Prenons l'exemple de la fonction lowly (), qui renvoie le maximum de deux arguments. Toutes les variantes suivantes ont un sens:
int maximum (int n1, int n2); // renvoie le maximum de deux entiers non signés maximum (non signé u1, non signé u2); double maximum (double d1, double d2); char maximum (char c1, char c2);
Ici, vous souhaitez implémenter maximum () pour les quatre cas.
Bien sûr, vous pourriez surcharger maximum () avec toutes les versions possibles:
double maximum (double d1, double d2) {return (d1> d2)? d1: d2;} int maximum (int n1, int n2) {return (n1> n2)? n1: n2;} char maximum (char c1, char c2) {return (c1> c2)? c1: c2;} // … répète pour tous les autres types numériques …
Cette approche fonctionne. Maintenant, C ++ sélectionne la meilleure correspondance, maximum (int, int) , pour une référence telle que maximum (1, 2) . Cependant, créer la même fonction pour chaque type de variable est une énorme perte de temps.
Le code source de toutes les fonctions maximales (T, T) suit le même modèle, où T est l'un des types numériques. Ce serait très pratique si vous pouviez écrire la fonction une seule fois et que C ++ fournisse le type T au besoin lorsque la fonction est utilisée. En fait, C ++ vous permet de faire exactement cela. Ils sont appelés définitions de modèles .