Überlastung des Bedieners

Definition - Was bedeutet Operator Overloading?

Das Überladen von Operatoren ist eine Technik, mit der in einer Programmiersprache verwendete Operatoren in benutzerdefinierten Typen mit angepasster Logik implementiert werden, die auf den übergebenen Argumenttypen basiert.

Das Überladen von Operatoren erleichtert die Angabe einer benutzerdefinierten Implementierung für Operationen, bei denen einer oder beide Operanden vom benutzerdefinierten Klassen- oder Strukturtyp sind. Dies hilft benutzerdefinierten Typen, sich ähnlich wie die grundlegenden primitiven Datentypen zu verhalten. Das Überladen von Operatoren ist hilfreich, wenn die für bestimmte Typen verwendeten Operatoren eine Semantik in Bezug auf den Domänenkontext und die syntaktische Unterstützung in der Programmiersprache bereitstellen. Es wird aus Gründen der syntaktischen Bequemlichkeit, Lesbarkeit und Wartbarkeit verwendet.

Java unterstützt keine Überladung von Operatoren, außer für die Verkettung von Zeichenfolgen, für die der Operator + intern überladen wird.

Technische.me erklärt das Überladen von Operatoren

Operatoren werden unter Verwendung der Operatornotation in Ausdrücken und der Funktionsnotation in Deklarationen referenziert. Die Syntax, Priorität und Assoziativität eines Operators kann nicht mithilfe benutzerdefinierter Operatordeklarationen geändert werden.

Beispielsweise werden Operatoren in C # basierend auf der Art der von ihnen ausgeführten Operation kategorisiert. Einige von ihnen werden in benutzerdefinierten Typen überladen, indem sie in statischen Elementfunktionen definiert und das Schlüsselwort operator verwendet werden. Die Parameter der Operatorfunktion repräsentieren die Operanden, während der Rückgabetyp einer Operatorfunktion das Ergebnis der Operation repräsentiert. Das Überladen wird paarweise für Operatoren implementiert, z. B. Vergleichsoperatoren wie "==" und "! =". Die Equals () -Methode für diese Operatoren sollte überschrieben werden, um eine Compilerwarnung zu vermeiden. Das Überladen darf nicht für Operatoren wie bedingt, logisch (und !!), Zuweisung (+ =, - = usw.), Casting und Array-Indizierung ([]) verwendet werden.

Es wird dringend empfohlen, die Überladung des Bedieners so zu implementieren, dass die erzielten Ergebnisse intuitiv von der Standardimplementierung des Bedieners erwartet werden. Bestimmte mathematische Regeln wie das kommutative Recht, die auf Ausdrücke mit zwei Operanden anwendbar sind, können bei der Überladung von Typen nicht angewendet werden, da sie nur für numerische Operanden definiert sind.