Heim > Backend-Entwicklung > C++ > Hauptteil

Können Mitgliedsfunktionen teilweise auf Klassenvorlagen spezialisiert werden?

Barbara Streisand
Freigeben: 2024-11-04 18:48:02
Original
657 Leute haben es durchsucht

Can Member Functions Be Partially Specialized in Class Templates?

Member-Funktionsspezialisierung in Klassenvorlagen

Eine teilweise Spezialisierung, die die Änderung bestimmter Mitglieder in einer Vorlagenklasse ermöglicht, wird für Mitglieder nicht unterstützt Funktionen. Dies bedeutet, dass Code wie der folgende nicht kompiliert werden kann:

<code class="cpp">template <typename T, bool B>
struct X
{
    void Specialized();
};

template <typename T>
void X<T, true>::Specialized()
{
    ...
}

template <typename T>
void X<T, false>::Specialized()
{
    ...
}</code>
Nach dem Login kopieren

Alternative Ansätze

  • Explizite Spezialisierung: Sie können explizit spezialisieren eine Mitgliedsfunktion, indem alle Vorlagenargumente bereitgestellt werden.
<code class="cpp">template <>
void X<int, true>::Specialized()
{
    ...
}</code>
Nach dem Login kopieren
  • Überladene Funktionen:Führen Sie überladene Funktionen ein, die Zugriff auf Mitgliedsvariablen, Funktionen und Objekte der Klasse haben .
<code class="cpp">template <typename T, bool B>
struct X
{
    template <bool B>
    static void Specialized(int);
};

template <typename T>
inline void X<T, true>::Specialized(int)
{
    ...
}

template <typename T>
inline void X<T, false>::Specialized(int)
{
    ...
}</code>
Nach dem Login kopieren
  • Separate Klassenvorlage:Verweisen Sie auf eine separate Klassenvorlage, um die Spezialisierung zu verwalten.
<code class="cpp">template <typename T, bool B>
struct SpecializedImpl
{
    static void call()
    {
        ...
    }
};

template <typename T, bool B>
struct X
{
    void Specialized()
    {
        SpecializedImpl<T, B>::call();
    }
};</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonKönnen Mitgliedsfunktionen teilweise auf Klassenvorlagen spezialisiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!