NULL



  • c++hater schrieb:

    ständig motzt der compiler wegen irgendwelchen illegal cast static_cast reinterpret_cast etc der ganze schwachsinn!

    Das zeigt doch eindeutig, daß Du Schrott zusammenschreibst. In C++ gibt es kaum Gründe überhaupt einen Cast zu nutzen, in seltenen Fällen braucht man mal dynamic_cast. Die restlichen Casts braucht man nur im Zusammenspiel mit der Altlast C, oder wenn man Designfehler ausbügeln muß.



  • ~john schrieb:

    In C++ gibt es kaum Gründe überhaupt einen Cast zu nutzen, in seltenen Fällen braucht man mal dynamic_cast. Die restlichen Casts braucht man nur im Zusammenspiel mit der Altlast C...

    in einem gut gemachten C-programm wird auch selten bis nie gecastet. das muss an was anderem liegen. übrigens ist diese 'altlast' ein grosser bestandteil von C++. oder glaubst du etwa, irgendwelche saboteure waren am werk, die C++ mit C-syntax vergiftet haben?

    ~john schrieb:

    ...oder wenn man Designfehler ausbügeln muß.

    den begriff 'designfehler' hört man sehr oft im zusammenhang mit C++. woran liegt das eigentlich?
    🙂



  • +fricky schrieb:

    den begriff 'designfehler' hört man sehr oft im zusammenhang mit C++. woran liegt das eigentlich?
    🙂

    woanders bemerkst du es nicht, weil z.B. java die fehler als feature verkauft.



  • volkard schrieb:

    ...weil z.B. java die fehler als feature verkauft.

    hast du ein beispiel?
    🙂



  • +fricky schrieb:

    volkard schrieb:

    ...weil z.B. java die fehler als feature verkauft.

    hast du ein beispiel?
    🙂

    klar. sehr laut waren immer die schreier, die schien, daß java niemals operator overloading haben dürfe, weil es den code total unlesbar macht.



  • volkard schrieb:

    +fricky schrieb:

    volkard schrieb:

    ...weil z.B. java die fehler als feature verkauft.

    hast du ein beispiel?
    🙂

    klar. sehr laut waren immer die schreier, die schien, daß java niemals operator overloading haben dürfe, weil es den code total unlesbar macht.

    Wieso ist es ein Fehler keine op. overloading zu haben? Nun wird zwar deine nachste mathematische API eben ein wenig komplizierter zu benutzen sein, ich kann aber gut ohne op. overloading leben.



  • +fricky schrieb:

    in einem gut gemachten C-programm wird auch selten bis nie gecastet.

    Kein Wunder C kennt keine strenge Typisierung.

    +fricky schrieb:

    das muss an was anderem liegen. übrigens ist diese 'altlast' ein grosser bestandteil von C++.

    Leider - es verkompliziert die Sprache und die Compiler nur, und bringt nur etwas, wenn man C-Header für das Linken von C-Objektmodule braucht. In normalen C++ Code braucht man die Altlasten nun wirklich nicht mehr.



  • volkard schrieb:

    sehr laut waren immer die schreier, die schien, daß java niemals operator overloading haben dürfe, weil es den code total unlesbar macht.

    ja, ist schon ein echter schwachpunkt, dass diese starke source code encryption technologie allen java codern verwehrt ist. dann könnte java eindlich so'nen stream-input shiftoperator einführen, wie z.b. C++'s <<, der seine operanden nach belieben verwurschteln kann. noch irgendwas? pointer und mehrfachvererbung vielleicht?

    Kein Wunder C kennt keine strenge Typisierung.

    C++ aber auch nicht, hat's alles von C übernommen, bis auf die kleine ausnahme mit dem void*
    🙂



  • +fricky schrieb:

    noch irgendwas? pointer und mehrfachvererbung vielleicht?

    Java hat doch Pointer, nur keine Pointerarithmetik. Oder lässt du dich von Sun's Naming-Convention irre leiten, welche diese Pointer als References bezeichnet?

    Kein Wunder C kennt keine strenge Typisierung.

    C++ aber auch nicht, hat's alles von C übernommen, bis auf die kleine ausnahme mit dem void*
    :)[/quote]
    Haha, der war gut 😃 👍



  • Java-Progger schrieb:

    +fricky schrieb:

    noch irgendwas? pointer und mehrfachvererbung vielleicht?

    Java hat doch Pointer, nur keine Pointerarithmetik. Oder lässt du dich von Sun's Naming-Convention irre leiten, welche diese Pointer als References bezeichnet?

    es ist verdammt lange her, als ich mit Java zu tun hatte, also vielleicht hat sich das geändert. Aber soweit ich mich erinnere, sind diese ach-so-tolle Referenzen eher mit C++ Referenzen zu vergleichen als mit C Zeigern. Oder kannst du eine Java Referenz auf jede beliebige Addresse des Addressraums zeigen lassen?



  • supertux schrieb:

    es ist verdammt lange her, als ich mit Java zu tun hatte, also vielleicht hat sich das geändert. Aber soweit ich mich erinnere, sind diese ach-so-tolle Referenzen eher mit C++ Referenzen zu vergleichen als mit C Zeigern. Oder kannst du eine Java Referenz auf jede beliebige Addresse des Addressraums zeigen lassen?

    kannst du Referenzen einfach mal auf andere Objekte zeigen lassen?

    ja, ist schon ein echter schwachpunkt, dass diese starke source code encryption technologie allen java codern verwehrt ist. dann könnte java eindlich so'nen stream-input shiftoperator einführen, wie z.b. C++'s <<, der seine operanden nach belieben verwurschteln kann.

    Vektor a,b;
    Matrix m;
    m.multiply(a.plus(b))
    

    vs

    m*(a+b)
    


  • otze schrieb:

    Vektor a,b;
    Matrix m;
    m.multiply(a.plus(b))
    

    vs

    m*(a+b)
    

    Genau das habe ich mit der Aussage gemein.

    Wieso ist es ein Fehler keine op. overloading zu haben? Nun wird zwar deine nachste mathematische API eben ein wenig komplizierter zu benutzen sein, ich kann aber gut ohne op. overloading leben.

    Gibt es irgendein Beispiel in dem op. Uberladung sinnvoll ist, dass nicht irgendwelche Vektoren oder Matritzen beinhaltet (oder selbst definierten komplexe Zahlen). Also ein Beispiel ausserhalb der Mathematik?



  • DEvent schrieb:

    Gibt es irgendein Beispiel in dem op. Uberladung sinnvoll ist, dass nicht irgendwelche Vektoren oder Matritzen beinhaltet (oder selbst definierten komplexe Zahlen). Also ein Beispiel ausserhalb der Mathematik?

    Das muss man sich auf der Zunge zergehen lassen 🙄



  • operator overloading ist öfters mal im Dienste der Lesbarkeit sinnvoll, z.B. "+" für Arithmetik, Listen & Strings oder * für die Vervielfachung von Objekten wie Strings, außerdem haben viele Sprachen ohne explizites operator overloading Elemente von implizitem operator-overloading an versteckten Stellen, z.B. ( ) für Auswertungs-Priorität & Argumentübergabe bei Funktionen, - für Subtraktion (binär) und Negation (unär).


  • Administrator

    Und noch was sollte man da ergänzen:
    Wenn eine Programmiersprache alles verbieten müsste, was man falsch verwenden könnte, dann dürfte es gar keine Programmiersprachen mehr geben.

    Grüssli



  • u_ser-l schrieb:

    operator overloading ist öfters mal im Dienste der Lesbarkeit sinnvoll, z.B. "+" für Arithmetik, Listen & Strings oder * für die Vervielfachung von Objekten wie Strings, außerdem haben viele Sprachen ohne explizites operator overloading Elemente von implizitem operator-overloading an versteckten Stellen, z.B. ( ) für Auswertungs-Priorität & Argumentübergabe bei Funktionen, - für Subtraktion (binär) und Negation (unär).

    Ich habe um ein Beispiel gebeten. Implizierte op-overloading nenne ich Sprach-Feature weil es in der Sprache eingebaut ist.

    myArray += elememt;
    myArray.add(element);
    
    str = new StringBuilder();
    str += "Hallo";
    str.append("Hallo");
    
    stream << "Text";
    stream.write("Text");
    
    listeners += new EventListener();
    listeners.add(new EventListener());
    

    Also wo ist bitte op.-overloading ausserhalb von mathematischen Bibliotheken. sinnvoll?



  • otze schrieb:

    supertux schrieb:

    es ist verdammt lange her, als ich mit Java zu tun hatte, also vielleicht hat sich das geändert. Aber soweit ich mich erinnere, sind diese ach-so-tolle Referenzen eher mit C++ Referenzen zu vergleichen als mit C Zeigern. Oder kannst du eine Java Referenz auf jede beliebige Addresse des Addressraums zeigen lassen?

    kannst du Referenzen einfach mal auf andere Objekte zeigen lassen?

    meinst C++ Refrenzen? Soweit ich weiß nicht. Deswegen sagte ich, dass für mich Java Referenzen eher wie C++ Referenzen sind und nicht wie C Zeiger.



  • supertux schrieb:

    otze schrieb:

    supertux schrieb:

    es ist verdammt lange her, als ich mit Java zu tun hatte, also vielleicht hat sich das geändert. Aber soweit ich mich erinnere, sind diese ach-so-tolle Referenzen eher mit C++ Referenzen zu vergleichen als mit C Zeigern. Oder kannst du eine Java Referenz auf jede beliebige Addresse des Addressraums zeigen lassen?

    kannst du Referenzen einfach mal auf andere Objekte zeigen lassen?

    meinst C++ Refrenzen? Soweit ich weiß nicht. Deswegen sagte ich, dass für mich Java Referenzen eher wie C++ Referenzen sind und nicht wie C Zeiger.

    aua.



  • Java-Progger schrieb:

    +fricky schrieb:

    noch irgendwas? pointer und mehrfachvererbung vielleicht?

    Java hat doch Pointer, nur keine Pointerarithmetik. Oder lässt du dich von Sun's Naming-Convention irre leiten, welche diese Pointer als References bezeichnet?

    nee, aber du akzeptiert wohl nur sowas wie c++ referenzen als 'richtige' referenzen. c++ ist nicht der masstab dafür, was andere programmiersprachen als referenz bezeichnen dürfen. 'nen unterschied zwischen 'referenz' und 'pointer' gibt es doch nur unter C++ und C#, oder? andere sprachen haben entweder das eine oder das andere, und nenen es pointer, referenz oder sonstwie.
    mit Java-referenzen kannst du weder rechnen, noch kannste 'ne referenz auf was fremdes verweisen lassen (z.b. ein byte[] auf ein double[]). aber selbst ohne diese einschränkungen, ist es keiner sprache verboten, irgendeine form des 'verweisens auf objekte' referenz zu nennen. dass java intern pointer verwendet (macht C++ bei seinen 'referenzen' übrigens auch sehr oft), spielt doch keine geige. ein dämlicher programmierer wird ausgebremst, groben unfug damit anzustellen. das ist wichtiger.
    🙂



  • Also wo ist bitte op.-overloading ausserhalb von mathematischen Bibliotheken. sinnvoll?

    Container, Smartpointer, Inline-EBNF(boost::spirit)
    Dass man es nicht allzu oft braucht ist der Grund, warum es in Java nicht vorhanden ist, das Problem ist allerdings, dass man in C++ drauf verzichten kann, wenn man will, es sich in Java aber nicht einfach herbei zaubern kann.

    nee, aber du akzeptiert wohl nur sowas wie c++ referenzen als 'richtige' referenzen. c++ ist nicht der masstab dafür, was andere programmiersprachen als referenz bezeichnen dürfen. 'nen unterschied zwischen 'referenz' und 'pointer' gibt es doch nur unter C++ und C#, oder? andere sprachen haben entweder das eine oder das andere, und nenen es pointer, referenz oder sonstwie.

    Hier geht es darum, ob eine Java-Referenz eher einem Pointer oder einer C++-Referenz ähnelt. Auf jedenfall liegt sie dazwischen, aber im Prinzip ist es ein Pointer, mit dem man weniger machen kann. Nomenklatur ist doch irrelevant.


Anmelden zum Antworten