Video: C++ Programmieren (3) - Rechnen mit Variablen 2024
Die intrinsischen Datentypen sind in die C ++ - Sprache integriert, z. B. int , float , und double und die verschiedenen Zeigertypen. C ++ ermöglicht es dem Programmierer, die Operatoren für Klassen zu definieren, die der Programmierer zusätzlich zu diesen intrinsischen Operatoren erstellt hat. Dies wird als Überladung des Operators bezeichnet.
Normalerweise ist das Überladen von Operatoren optional und wird nicht von C ++ - Programmierern gestartet. Viele erfahrene C ++ - Programmierer sind nicht der Meinung, dass die Überladung von Operatoren ebenfalls eine großartige Idee ist. Sie müssen jedoch lernen, einen Operator zu überladen: den Zuweisungsoperator.
Ein Operator ist nichts anderes als eine eingebaute Funktion mit einer speziellen Syntax. Die folgende Additionsoperation
a + b
könnte so verstanden werden, als wäre sie geschrieben
operator + (a, b)
In der Tat gibt C ++ jedem Operator einen Funktionsstilnamen. Der funktionale Name eines Operators ist das Operatorsymbol, dem der Schlüsselwortoperator vorangestellt ist, gefolgt von den entsprechenden Argumenttypen. Zum Beispiel wird der Operator + , der ein int zu einem int erzeugt, das int erzeugt, als int operator + (int, int) bezeichnet.
Jeder existierende Operator kann für eine benutzerdefinierte Klasse definiert werden. Somit könnte ich einen komplexen Operator * (const Complex &, const Complex &) erstellen, der es mir erlaubt, zwei Objekte vom Typ Complex zu multiplizieren. Der neue Operator kann die gleiche Semantik haben wie der Operator, den er überlädt, muss es aber nicht. Beim Überladen von Operatoren gelten folgende Regeln:
-
Der Programmer kann das nicht überladen. (Punkt), :: (Doppelpunkt), . *, * ->, sizeof und ?: (ternäre) Operatoren.
-
Der Programmierer kann keinen neuen Operator erfinden. Zum Beispiel können Sie die Operation x $ y nicht erfinden.
-
Die Syntax eines Operators kann nicht geändert werden. Daher können Sie keine Operation% i definieren, da% bereits als binärer Operator definiert ist.
-
Die Operatorpriorität kann nicht geändert werden. Ein Programm kann operator + nicht vor operator * evaluieren.
-
Die Operatoren können nicht neu definiert werden, wenn sie auf intrinsische Typen angewendet werden - Sie können die Bedeutung von 1 + 2 nicht ändern. Bestehende Operatoren können nur für neu definierte Typen überladen werden.
Überladen von Operatoren ist eines der Dinge, die eine viel bessere Idee zu sein scheinen, als sie wirklich ist. Üblicherweise führt die Überlastung von Operatoren zu mehr Problemen, als sie lösen.