Maison >développement back-end >C++ >Comment réaliser une spécialisation partielle d'une fonction membre au sein d'une classe modèle en C ?

Comment réaliser une spécialisation partielle d'une fonction membre au sein d'une classe modèle en C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-16 10:46:03681parcourir

How can you achieve partial specialization of a member function within a template class in C  ?

Spécialisation partielle des fonctions membres de classe

Contrairement aux fonctions régulières, la spécialisation partielle uniquement d'une fonction membre au sein d'une classe modèle n'est pas autorisée en C . Au lieu de cela, il est nécessaire de spécialiser partiellement la classe entière.

Pour obtenir une spécialisation partielle d'une fonction membre, les étapes suivantes doivent être suivies :

  1. Déclarer une classe de modèle entièrement spécialisée pour les valeurs spécifiques des paramètres du modèle qui nécessitent la fonction membre spécialisée.
  2. Dans le modèle de classe spécialisée, définissez la fonction membre souhaitée.

Par exemple, pour créer une spécialisation partielle pour la fonction membre Deform() dans le code donné où nValue est égal à 0, le code suivant montre comment corriger le code d'origine :

// Partial specialization of the Object class for nValue = 0
template <>
class Object<int, 0>
{
private:
    int m_t;
    Object();
public:
    Object(int t): m_t(t) {}
    int Get() { return m_t; }
    Object& Deform()
    {
        std::cout << "Specialized\n";
        m_t = -1;
        return *this;
    }
};

Avec ces modifications, le code spécialisera désormais correctement partiellement la fonction Deform() fonction membre pour nValue égale à 0.

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