Überladen von Operatoren
Aus unkompliziert.eu
Version vom 11. April 2020, 08:04 Uhr von Felix (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Überladen von Operatoren Der Aufruf von Bruch oB1 = …; Bruch oB2 = …; Bruch oB3 = oB1 + oB2; liefert einen Fehler, weil C# nicht weiß, wie man zwei Br…“)
Überladen von Operatoren
Der Aufruf von Bruch oB1 = …; Bruch oB2 = …; Bruch oB3 = oB1 + oB2;
liefert einen Fehler, weil C# nicht weiß, wie man zwei Brüche addieren kann.
In objektorientierten Programmiersprachen können jedoch Operatoren überladen werden, um diese Funktionalität zur Verfügung zu stellen.
public static Bruch operator +(Bruch oB1, Bruch oB2) { int iNeuerZaehler = oB1.m_iZaehler * oB2.m_iNenner + oB2.m_iZaehler * oB1.m_iNenner; int iNeuerNenner = oB1.m_iNenner * oB2.m_iNenner; // Anlegen eines neuen Bruchs mit den neuen Werten: Bruch oErg = new Bruch(iNeuerZaehler, iNeuerNenner); return oErg; }
Durch diesen Operator ist die oben genannte Schreibweise
oB3 = oB1 + oB2
möglich.
Dadurch ist eine realitätsnähere Implementierung einer Klasse möglich.
Regeln für die Operator-Überladung
- Eine Operator-Methode muss immer public und static sein. static bedeutet, dass die Methode ohne ein zugehöriges
Objekt aufgerufen werden kann.
- Die Grundfunktionalität eines Operators kann nicht geändert werden, d.h. der „+-Operator“ benötigt immer zwei Operanden. Die Anzahl kann nicht geändert werden.
- Es können nur existierende Operatoren überladen werden. Es ist z.B. kein §-Operator möglich.
- Wenn man einen Operator überlädt, sollte man dringend auch alle anderen Operatoren der gleichen Operatoren-Familie überladen.
- Arithmetische, bzw. Rechenoperatoren
+, -, *, /, +=, *=, /=, -=
- Vergleichsoperatoren
>, <, >=, <=, ==, !=
Folgende Operatoren werden normalerweise nicht überladen:
- Logische
&&, ||
- Bit-Operatoren
&, |, !