Maison > développement back-end > C++ > le corps du texte

Comment surchargez-vous le `

Barbara Streisand
Libérer: 2024-11-01 14:06:29
original
395 Les gens l'ont consulté

How do you overload the `

Surcharge de l'opérateur ami << pour la classe de modèle [Dupliquer]

En programmation, vous pouvez rencontrer des situations dans lesquelles vous souhaitez surcharger un opérateur spécifique pour interagir avec vos types de données ou classes personnalisés. Cette question explore un problème qui survient lors d'une tentative de surcharge du << opérateur comme fonction amie pour une classe de modèle.

L'extrait de code fourni déclare une classe de modèle Pair avec deux paramètres de type T et U. Dans cette classe, il y a une tentative de déclarer l'opérateur << opérateur comme fonction amie qui prend un ostream et une instance Pair comme paramètres. Cependant, le compilateur génère un avertissement concernant la déclaration d'une fonction non-modèle, malgré la définition ultérieure d'une fonction modèle pour l'opérateur.

Pour résoudre ce problème, la syntaxe correcte consiste à spécialiser l'instance de modèle pour le < ;&Lt ; opérateur au lieu de le déclarer comme fonction amie générale. Ceci est réalisé en modifiant la déclaration comme suit :

friend ostream& operator<<<> (ostream&, Pair&);

Cette déclaration spécifie qu'une instance de modèle spécialisée du << sera défini pour la classe Pair avec les paramètres de type T et U. Il indique explicitement qu'il s'agit d'une spécialisation et non d'une déclaration générale.

De plus, la recommandation du compilateur d'ajouter <...> après le nom de la fonction dans la déclaration ami n'est pas nécessaire dans ce cas car le compilateur peut déduire les paramètres de type à partir des arguments du modèle dans la définition.

En effectuant ces ajustements, le code sera compilé avec succès. N'oubliez pas que pour la surcharge d'opérateurs dans les modèles, vous devez spécifier explicitement l'instance de modèle à spécialiser, comme indiqué dans la déclaration modifiée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!