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!