Maison >développement back-end >C++ >Comment puis-je surcharger le `

Comment puis-je surcharger le `

Susan Sarandon
Susan Sarandonoriginal
2024-11-01 00:47:28409parcourir

How can I overload the `

Surcharge du << Opérateur utilisant la spécialisation de modèle

En C , il est possible de surcharger l'opérateur ami << pour les classes modèles. Cependant, cela nécessite une approche différente par rapport aux déclarations de fonctions amies classiques.

Pour surcharger le << opérateur, une spécialisation en modèle est nécessaire. Cette spécialisation implique la création d'une instance spécifique de la classe modèle pour laquelle l'opérateur est surchargé. La déclaration spécialisée s'écrit comme suit :

template <>
class Pair {
  // ...
  friend ostream& operator<<(ostream&, Pair&);
}

Dans cette spécialisation, les arguments du modèle sont laissés vides, car le compilateur peut les déduire à partir de la liste de paramètres dans la déclaration de l'opérateur.

La déclaration originale du << L'opérateur dans le code publié était une déclaration d'ami, mais il tentait de manière incorrecte de surcharger l'opérateur pour toutes les instances de la classe modèle. Au lieu de cela, en utilisant la spécialisation de modèle comme indiqué ci-dessus, une instance spécifique de la classe de modèle devient amie, permettant au << opérateur à utiliser uniquement pour cette instance.

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!

Déclaration:
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