C ++: Operatoren mit Funktionen Vergleich

Das innere Datentypen werden in der Sprache C ++ aufgebaut, wie beispielsweise int, schweben, und doppelt und die verschiedenen Zeigertypen. C ++ ermöglicht es dem Programmierer die Operatoren für Klassen zu definieren, die der Programmierer zusätzlich zu diesen inneren Betreiber geschaffen hat. Das nennt man Betreiber Überlastung.

Normalerweise ist Betreiber Überlastung optional und nicht von Anfang C ++ Programmierer versucht. Viele erfahrene C ++ Programmierer glaube nicht, Überladen von Operatoren entweder wie eine große Idee. Allerdings müssen Sie lernen, wie ein Betreiber zu überlasten: den Zuweisungsoperator.

Ein Operator ist nichts anderes als eine integrierte Funktion mit einer besonderen Syntax. Die folgende Additionsoperation

a + b

konnte verstanden werden, als ob sie geschrieben wurden,

operator + (a, b)

In der Tat gibt C ++ jeder Betreiber eine Funktion Stil Namen. Der Funktionsname eines Operators ist der Operator-Symbol durch das Schlüsselwort voran Operator und durch die entsprechenden Argumenttypen gefolgt. Beispielsweise die + Betreiber, der ein fügt int zu einem int Erzeugen eines int wird genannt int operator + (int, int).

Alle bestehenden Betreiber kann für eine benutzerdefinierte Klasse definiert werden. So konnte ich eine erstellen Komplexe operator * (const Complex, const Complex) das würde mir erlauben, zwei Objekte vom Typ zu multiplizieren Komplex. Der neue Betreiber kann die gleiche Semantik wie die Betreiber es überlastet, aber es muss nicht. Die folgenden Regeln gelten, wenn Betreiber Überlastung:

  • Der Programmierer kann nicht überlasten . (Punkt), :: (Doppelpunkt), .*, * ->, Sizeof und ?: (Ternäre) Operatoren.

  • Der Programmierer kann nicht einen neuen Operator erfinden. Zum Beispiel können Sie den Vorgang nicht erfinden x $ y.

  • Die Syntax einer Bedienungsperson kann nicht geändert werden. So können Sie eine Operation nicht definieren %ich weil % ist bereits als binärer Operator definiert.

  • Der Betreiber Vorrang kann nicht geändert werden. Ein Programm kann nicht erzwingen, operator + ausgewertet werden, bevor Operator*.

  • Die Betreiber können nicht neu definiert werden, wenn sie auf Eigenarten angewendet - man kann nicht die Bedeutung von 1 ändern + 2. Bestehende Operatoren können nur für neu definierte Typen überlastet werden.

Eine Überlastung ist Betreiber eines jener Dinge, die wie eine viel bessere Idee scheint, als es wirklich ist. Normalerweise führt Betreiber Überlastung mehr Probleme als sie löst.

Menü