Template-Spezialisierung und Template-Teilspezialisierung in C++?

WBOY
Freigeben: 2024-05-08 17:33:01
Original
785 Leute haben es durchsucht

Template-Spezialisierung und partielle Spezialisierung sind einzigartige Mechanismen in C++. Vorlagenspezialisierungen stellen spezifische Implementierungen für bestimmte Arten von Vorlagenparametern bereit, während teilweise Vorlagenspezialisierungen die Typisierung von Vorlagen auf der Grundlage einiger Vorlagenparameter ermöglichen, wodurch ihre Verwendung flexibler wird. Vorlagenspezialisierungen verwenden die Syntax template, während Vorlagenspezialisierungen die Syntax template verwenden.

Template-Spezialisierung und Template-Teilspezialisierung in C++?

Template-Spezialisierung und Template-Teilspezialisierung in C++

Template-Spezialisierung

Template-Spezialisierung bezieht sich auf die explizite Bereitstellung einer bestimmten Template-Implementierung für einen bestimmten Typ von Template-Parametern. Die Syntax lautet wie folgt:

template <> class MyClass { // 特化代码 };
Nach dem Login kopieren

Beispiel:

template  class MyClass { T value; public: MyClass(T v) : value(v) {} T getValue() { return value; } }; template <> class MyClass { int value; public: MyClass(int v) : value(v) {} int getValue() { return value * 2; } }; int main() { MyClass strObj("Hello"); cout << strObj.getValue() << endl; MyClass intObj(5); cout << intObj.getValue() << endl; }
Nach dem Login kopieren

Ausgabe:

Hello 10
Nach dem Login kopieren

Partielle Vorlagenspezialisierung

Eine teilweise Vorlagenspezialisierung ist eine spezielle Vorlagenspezialisierung, mit der Vorlagen basierend auf einem Teil der eingegeben werden können Vorlagenparameter. Die Syntax lautet wie folgt:

template  class MyClass { // ... }; template  class MyClass { // 偏特化代码 };
Nach dem Login kopieren

Beispiel:

template  class MyClass { T value1; U value2; public: MyClass(T v1, U v2) : value1(v1), value2(v2) {} T getValue1() { return value1; } U getValue2() { return value2; } }; template  class MyClass { public: MyClass(T v) : value1(v), value2(v) {} T getValue1() { return value1; } T getValue2() { return value2; } }; int main() { MyClass strIntObj("Hello", 5); cout << strIntObj.getValue1() << ", " << strIntObj.getValue2() << endl; MyClass intObj(10); cout << intObj.getValue1() << ", " << intObj.getValue2() << endl; }
Nach dem Login kopieren

Ausgabe:

Hello, 5 10, 10
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonTemplate-Spezialisierung und Template-Teilspezialisierung in C++?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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 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!