Heim  >  Artikel  >  Backend-Entwicklung  >  Wie überladen Sie die `

Wie überladen Sie die `

Barbara Streisand
Barbara StreisandOriginal
2024-11-01 14:06:29396Durchsuche

How do you overload the `

Überlastung des Friend-Operators << für Vorlagenklasse [Duplikat]

Beim Programmieren kann es vorkommen, dass Sie einen bestimmten Operator überladen möchten, um mit Ihren benutzerdefinierten Datentypen oder Klassen zu interagieren. Diese Frage untersucht ein Problem, das auftritt, wenn versucht wird, den << Operator als Friend-Funktion für eine Template-Klasse.

Das bereitgestellte Code-Snippet deklariert ein Template-Klassenpaar mit zwei Typparametern T und U. Innerhalb dieser Klasse wird versucht, das << Operator als Friend-Funktion, die eine ostream- und eine Pair-Instanz als Parameter akzeptiert. Der Compiler gibt jedoch trotz der anschließenden Definition einer Vorlagenfunktion für den Operator eine Warnung aus, wenn eine Nicht-Vorlagenfunktion deklariert wird.

Um dieses Problem zu beheben, besteht die richtige Syntax darin, die Vorlageninstanz für < zu spezialisieren ;< Operator, anstatt ihn als allgemeine Friend-Funktion zu deklarieren. Dies wird erreicht, indem die Deklaration wie folgt geändert wird:

friend ostream& operator<<<> (ostream&, Pair&);

Diese Deklaration gibt an, dass eine spezialisierte Vorlageninstanz des << Der Operator wird für die Pair-Klasse mit den Typparametern T und U definiert. Es wird ausdrücklich darauf hingewiesen, dass es sich um eine Spezialisierung und nicht um eine allgemeine Deklaration handelt.

Darüber hinaus empfiehlt die Compiler-Empfehlung, <...> nach dem Funktionsnamen in der Friend-Deklaration ist in diesem Fall unnötig, da der Compiler die Typparameter aus den Vorlagenargumenten in der Definition ableiten kann.

Durch diese Anpassungen wird der Code erfolgreich kompiliert. Denken Sie daran, dass Sie zum Überladen von Operatoren in Vorlagen die zu spezialisierende Vorlageninstanz explizit angeben müssen, wie in der geänderten Deklaration gezeigt.

Das obige ist der detaillierte Inhalt vonWie überladen Sie die `. 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