Habt ihr eine Laufzeitumgebung (VM/.Net) installiert?



  • Optimizer schrieb:

    Das toString() rockt doch. Das finde ich mal wirklich ne geniale Idee. 🙂

    Rational myRational = new Rational(17, 6);
    System.out.println("Wert des Bruches: " + myRational);
    

    Zum Glück kann man das in C++ nicht machen. toString sieht für mich eher so aus: "Oh, wir können keine Operatoren überladen. Wär aber ganz praktisch wenn man Strings per + Operator konkatenieren könnte. Hmmm, ja dann lass uns doch einfach ein toString in Object reinbasteln."



  • MaSTaH schrieb:

    Zum Glück kann man das in C++ nicht machen. toString sieht für mich eher so aus: "Oh, wir können keine Operatoren überladen. Wär aber ganz praktisch wenn man Strings per + Operator konkatenieren könnte. Hmmm, ja dann lass uns doch einfach ein toString in Object reinbasteln."

    Wo siehst du den Zusammenhang zwischen toString und dem Konkatenieren von Strings? 😕



  • Ich habe bei mir das .NET-Framework installiert, um mal in C# reinschnuppern zu
    koennen.

    Ob man dieser Technologie die Zukunft zusprechen kann, bleibt abzuwarten. Denn
    schliesslich ist Longhorn noch lang nicht zu erwarten und ohne dieses sehe ich
    keinen Grund dafuer, ernsthaft .NET-Programme zu entwickeln. Und irgendwie
    scheint sich .NET auch noch nicht wirklich zu durchzusetzen.

    Aber ob es wirklich kommen wird oder nicht, darauf muessen wir, wie schon gesagt,
    warten und sehen was passiert.

    mfg
    v R



  • Gregor schrieb:

    MaSTaH schrieb:

    Zum Glück kann man das in C++ nicht machen. toString sieht für mich eher so aus: "Oh, wir können keine Operatoren überladen. Wär aber ganz praktisch wenn man Strings per + Operator konkatenieren könnte. Hmmm, ja dann lass uns doch einfach ein toString in Object reinbasteln."

    Wo siehst du den Zusammenhang zwischen toString und dem Konkatenieren von Strings? 😕

    Ich hatte im Eifer des Gefechts meine Gedanken ein wenig ungeordnet gepostet. Ich meinte folgendes: Wenn ich ein Objekt auf der Konsole ausgeben möchte dann kann ich nicht folgendes machen: System.out.println("Hallo" + obj1 + "!"), wenn ich nicht irgendwie eine implizite Umwandlung eines Objektes nach String realisiere. Deswegen sehe ich toString als eine Notlösung weil man sich keinen Umwandlungs-Operator überladen kann. Ich finde es auch schwachsinnig, dass man String erlaubt per + Operator konkatenierbar zu sein und einer Klasse BigInteger keine arithmetrischen Operatoren spendiert. Wenn man etwas in einer Sprache implementiert dann sollte manauch konsequent sein.



  • Helium schrieb:

    Wenn ich eine Funktion schreibe, gehe ich davon aus, dass die Argumente richtig übergeben wurden.

    Das ist dein Fehler.

    Na wenn du meinst, ich bin bisher damit ganz gut gefahren.

    Aber irgendwie verlief das jetzt in die falsche Richtung, ich habe nichts gegen asserts und verwende die auch hier und da. Ursprünglich gings mir darum, dass man im Gegensatz zu Exceptions, auf asserts auch verzichten kann. Wenn ich jetzt eine Library schreibe und die compiliere, sind die asserts ja auch raus. Und wenn dann jemand falsche Argumente übergibt, endet das halt in "undefined behaviour".



  • DrGreenthumb schrieb:

    Und wenn dann jemand falsche Argumente übergibt, endet das halt in "undefined behaviour".

    Ja, genau das soll es ja nicht.

    MaSTaH schrieb:

    Deswegen sehe ich toString als eine Notlösung weil man sich keinen Umwandlungs-Operator überladen kann.

    Das sehe ich anders, weil man toString für jede Klasse selber definieren kann, anstatt in der String-Klasse für jede Kombination '+' zu definieren. Bei dem BigInteger stimme ich dir allerdings zu, Operator-Überladung vermisse ich in Java auch oft.



  • Das sehe ich anders, weil man toString für jede Klasse selber definieren kann, anstatt in der String-Klasse für jede Kombination '+' zu definieren. Bei dem BigInteger stimme ich dir allerdings zu, Operator-Überladung vermisse ich in Java auch oft.

    Hör mal bitte kurz auf in Java zu denken und dafür in C++. Dann wird dir ganz schnell einfallen, dass es globale Funktionen und auch globale Operatorenüberladungen gibt. Du kannst also jederzeit deinen +-Operator definieren, auch wenn du weder die Stringklasse noch die Klasse, die du gerne in einen String umwandeln würdest geschrieben hast.


Anmelden zum Antworten