Heim > Artikel > Backend-Entwicklung > Wie kann ich das ` überladen?
Ü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!