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

Wie kann ich das ` überladen?

Susan Sarandon
Susan SarandonOriginal
2024-11-01 00:47:28329Durchsuche

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!

Stellungnahme:
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