Modèles C ++ fonctions





fonction modèles c ++, fonctions c ++ templates, modèle c ++

le thème de la petite a déjà été considéré comme la surcharge de fonction en C ++. Vous avez appris à l'occasion d'écrire plusieurs fonctions avec le même nom, qui effectuent les mêmes tâches. La principale différence entre les – signature (types et / ou nombre de paramètres paramètres). Lorsque le programme démarre, le compilateur choisira, lequel des fonctions surchargées appliquer (supposant, qui est passé à la fonction)

Les modèles permettent également des fonctions pour gérer différents types de données, transmis en tant que paramètres. Mais il suffit d'écrire une définition commune d'une fonction. Voir à quoi il ressemble.

fonction modèles c ++, fonctions c ++ templates, modèle c ++

En définissant un modèle de fonction, nous avons utilisé des mots C ++ réservés: modèle et typename. modèle il indique, ce modèle sera maintenant défini. Et entre crochets après typename attribuer un nom conditionnelle du type de données. ici, au lieu du nom T, Vous pouvez assigner une (très désirable correct) nom.

Suivant est déterminé la fonction elle-même. Le type de retour précise T. paramètres: le nombre de types T, nombre et type de int. Cette fonction détermine le nombre et le pourcentage de la valeur dans le programme revient. Et le nombre, et le pourcentage passé en tant que paramètres. Par exemple, le premier paramètre on passe à une fonction entière (100). Lors du démarrage, le compilateur noter qu'actuellement T il int et remplacer les fonctions de modèle, tous ces T de int. Ainsi, la fonction du compilateur a la forme:

fonction modèles c ++, fonctions c ++ templates, modèle c ++

Nous ne voyons pas clairement, mais il fonctionne très bien. Quel que soit le nombre, nous avons pas passé à cette fonction comme premier paramètre, le compilateur va créer une instance d'un modèle de fonction pour tout appel. Ici, le premier paramètre peut être tout type de données.

En conséquence, l'écran voir le résultat de ce calcul:fonction modèles c ++, fonctions c ++ templates, modèle c ++

Au sujet de la définition d'un modèle de fonction, Je veux ajouter, en angle entre parenthèses après le mot-clé modèle permet d'enregistrer plusieurs noms conventionnels pour les types de données. Pourquoi voudriez-vous? Considérons cet exemple:

Il est nécessaire d'écrire une fonction, qui aura deux numéros, déterminer le maximum d'entre eux et le retourner dans le programme. Gardons à l'esprit, cette fonction, nous pouvons passer le nombre de différents types de. Chance et le hasard, un nombre est un nombre entier, et le second – réel. Voir ce qui se passe:

Les premier et second paramètres sont fonction définie, les paramètres de type T. Avec des appels de fonction dans les lignes 19-20 pas de problème, étant donné que les paramètres de transfert sont du même type de données. Des problèmes se posent dans la ligne 22 compiler. Et cela est compréhensible. Le compilateur se confondre. Il ne peut pas convertir le type int dans double.

шаблоны функций c++, шаблоны функций с++, template c++

Pour contourner ce problème, il est nécessaire d'écrire un autre modèle.

ici typename T_1 indique le type de paramètre, qui est transmis au premier dispositif. typename T_2 indiquent respectivement le type du second paramètre. Cette version des fonctions de définition de modèle avertir erreur, résultant dans la transmission de différents types de paramètres.

fonction modèles c ++, fonctions c ++ templates, modèle c ++

Il est important de se rappeler,si vous êtes entre crochets vous donner quelques noms pour les types classiques de paramètres de la fonction (dans cet exemple,), tous ces types de noms doivent être mentionnés dans la fonction de signature. Sinon, ne pas éviter les erreurs lors de la compilation. Par exemple, la définition d'un modèle

fonction modèles c ++, fonctions c ++ templates, modèle c ++

Elle conduit à des erreurs suivantes:

шаблоны функций c++, шаблоны функций с++, template c++

Le modèle que nous les types définis conditionnels T_1 et T_2, et la signature du type prescrit seulement T_1 .

Dans la pratique, vous pouvez répondre à la définition d'un modèle de fonction de telle manière, où, au lieu du mot-clé typename Il utilise le mot classe. par exemple:

fonction modèles c ++, fonctions c ++ templates, modèle c ++

il est équivalent à la définition de, nous avons considéré

fonction modèles c ++, fonctions c ++ templates, modèle c ++

plus tôt, avant que la norme C ++ 98, dans les modèles toujours utilisé le mot classe. Qui est le meilleur, quand il y avait un mot-clé typename , mieux utiliser. Comme il est suggère plus clairement, que les noms T_1 et T_2 Ils représentent le type.

Pour résumer. La fonction de modèle est conçu pour créer une description généralisée de la fonction. Une telle fonction peut prendre des paramètres de tout type. Le modèle permet au compilateur de générer du code pour une fonction spécifique telle que (ou des types) données, qui a été renvoyée par un appel.

Assurez-vous de regarder la vidéo. A propos des modèles avec 14 minutes:

Bulletin de nouvelles leçons sur la programmation:

Modèles C ++ fonctions
5 (100%) 4 votes

15 réflexions sur "Modèles C ++ fonctions

Laisser un commentaire

Votre adresse email ne sera pas publiée. les champs requis sont indiqués *