Operatorenüberladung ja/nein?
-
Durch Operatoüberladung kann man sehr viel Misst bauen.
Das schlimmste Beispiel für einen Missbrauch von Operatoren finde ich, ist ein Event in C# zu abonnieren.
-
Operatorenüberladung is gut und sinnvoll.
Nur weil es in Java nicht möglich ist, sind Java progger dagegen. Das ist die realität.
-
sdfdsf schrieb:
Operatorenüberladung is gut und sinnvoll.
Nur weil es in Java nicht möglich ist, sind Java progger dagegen. Das ist die realität.
Es gibt für Java Präprozessoren, die einem Operatorüberladung ermöglichen. Die werden aber kaum genutzt. Grund: Das interessiert einfach fast keinen.
-
Gregor schrieb:
Es gibt für Java Präprozessoren, die einem Operatorüberladung ermöglichen. Die werden aber kaum genutzt. Grund: Das interessiert einfach fast keinen.
Das sagt aber mehr ueber Praeprozessoren als ueber Operatorueberladung aus.
-
qwerty` schrieb:
Gerard schrieb:
== != für alles mögliche
Auch bei diesem Argument gehst du wieder von C++ als "Referenzmodell" für Operatorenüberladung aus. In Java gibt es nunmal einen Unterschied zwischen Identität und Gleichheit, da wäre eine Überladung eher kontraproduktiv.
Suuuuuuuuuper! In Java gibt es halt keine Pointer

-
Java geht halt eine klare Linie und realisiert die gleiche Semantik objektorientiert mit Methoden und Interfaces. Operatoren wirken ausschließlich auf primitive Datentypen, alles weitere sind Objekte und die werden auch so behandelt. Ich stimme DEvent aber vollkommen zu, bei mathematischen Klassen ist so eine Operatorüberladung hinsichtlich der Übersichtlichkeit schon praktisch.
-
byto schrieb:
...bei mathematischen Klassen ist so eine Operatorüberladung hinsichtlich der Übersichtlichkeit schon praktisch.
Und bei Iteratoren die Operatoren ++, */-> und &, damit sie sich wie Zeiger "anfühlen" und man damit Arithmetik machen kann.
-
qwerty` schrieb:
Gerard schrieb:
== != für alles mögliche
Auch bei diesem Argument gehst du wieder von C++ als "Referenzmodell" für Operatorenüberladung aus. In Java gibt es nunmal einen Unterschied zwischen Identität und Gleichheit, da wäre eine Überladung eher kontraproduktiv.
Ich greife das mal exemplarisch heraus. Die Argumentation geht aber bei einigen späteren Argumenten analog.
[/quote]Auch in C++ gibt es einen Unterschied zwischen Identität und Gleichheit. Wenn ich die Pointer vergleiche, dann Identität, wenn ich die Objekte vergleiche, dann die Gleicheit. Das Problem ist eher, daß es in Java nur Pointer gibt (Referenzen sind C++-Pointer mit dem Vorteil, daß sie nicht wild sein können), für die kann man Operatoren in C++ übrigens auch nicht überladen.
In Java gibt es keine Ausdrücke, die als Wert ein Objekt liefern. Immer nur die Referenz auf das Objekt. Deshalb würde eine Operatorenüberladung die Semantik tatsächlich zu stark verwischen. Da in C++ das aber getrennt ist, kann man das da schön machen.
-
Jester schrieb:
Auch in C++ gibt es einen Unterschied zwischen Identität und Gleichheit. Wenn ich die Pointer vergleiche, dann Identität, wenn ich die Objekte vergleiche, dann die Identität.

-
Danke für den Hinweis auf den Tippfehler.
-
bitte bitte ^^