Nous venons d'apprendre la surcharge de fonctions , qui peut gérer plusieurs types de données, même si elles portent le même nom, elles doivent toujours être définies séparément. Ce serait formidable si le code pouvait être rationalisé et modélisé ! À cette fin, C++ fournit un mécanisme de modèle de fonction, qui améliore considérablement la réutilisabilité du code.
Le modèle de fonction vous permet de créer une fonction générale prenant en charge plusieurs paramètres formels. Utilisez le modèle de mot-clé pour le définir sous la forme suivante :
template<nom du type de classe 1, nom du type de classe 2...> valeur de retour nom de la fonction (colonne de la liste de paramètres formelle) liste des paramètres du modèle {corps de la fonction}
Pour expliquer, sous cette forme générale, le modèle de la première ligne <class type name 1, class type name 2...> est une déclaration template est le mot clé qui définit la fonction du modèle. Il peut y avoir plusieurs types dans le. Les crochets angulaires précédents sont Utiliser la classe (ou le nom de type à définir). Suivez-le ensuite avec le modèle de fonction défini. N'oubliez pas de ne pas ajouter d'autres instructions au milieu, sinon une erreur sera signalée !
Ci-dessous, jetons un œil à un exemple spécifique !
#include<iostream>usingnamespacestd;template<classT1,classT2>T1add(T1x,T2y){cout<<sizeof(T1)<<,<<sizeof(T2)<<t;returnx+y;}intmain(){ cout<<add(10,20)<<endl;;cout<<add(3.14,5.98)<<endl;cout<<add('A',2)<<endl;return0;}
Ce qui précède est un modèle pour une fonction d'ajout. Vous pouvez voir que nous avons défini un modèle de fonction d'ajout et que les types de variables qu'il contient sont remplacés par T1 et T2.
Dans la fonction principale, lorsque nous l'appelons réellement, nous l'appelons trois fois, en passant trois types différents dans la fonction modèle. Les types T1 et T2 dans la fonction modèle seront transformés en types spécifiques en fonction du type réel transmis. Cette transformation est appelée. une instance du changement de modèle.
Ensuite, nous exécutons le programme et nous pouvons voir quels types T1 et T2 sont appelés à chaque fois, combien d'octets ils contiennent et le résultat de la sommation. L'effet de course est le suivant :
Vous pouvez comprendre le code ligne par ligne et réaliser l'expérience par vous-même.