Heim > Backend-Entwicklung > C++ > Wie kann ich das ` überladen?

Wie kann ich das ` überladen?

Susan Sarandon
Freigeben: 2024-11-01 00:47:28
Original
409 Leute haben es durchsucht

How can I overload the `

Überlastung des << Operator mit Vorlagenspezialisierung

In C ist es möglich, den Friend-Operator << für Vorlagenklassen. Es erfordert jedoch einen anderen Ansatz im Vergleich zu regulären Friend-Funktionsdeklarationen.

Um das << Für den Betreiber ist eine Template-Spezialisierung erforderlich. Bei dieser Spezialisierung wird eine bestimmte Instanz der Vorlagenklasse erstellt, für die der Operator überladen wird. Die spezialisierte Deklaration ist wie folgt geschrieben:

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

Bei dieser Spezialisierung werden die Vorlagenargumente leer gelassen, da der Compiler sie aus der Parameterliste innerhalb der Operatordeklaration ableiten kann.

Die Originalerklärung des << Der Operator im veröffentlichten Code war eine Friend-Deklaration, es wurde jedoch fälschlicherweise versucht, den Operator für alle Instanzen der Vorlagenklasse zu überladen. Stattdessen wird durch die oben beschriebene Verwendung der Vorlagenspezialisierung eine bestimmte Instanz der Vorlagenklasse zu einem Freund gemacht, wodurch das überladene << Operator, der nur für diesen Fall verwendet werden soll.

Das obige ist der detaillierte Inhalt vonWie kann ich das ` überladen?. 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