Ansi C Operator überladen?



  • ansi c kennt das nicht



  • Tobias1984 schrieb:

    Hallo, ist es möglich in ansi c Operatoren zu überladen speziell für
    + - * /

    nein, es ist nicht möglich in C.
    in fricklersprachen wie c++ und C# geht das, aber bedenke: operatorüberladung macht mehr probleme als es vorteile bringt. man kann damit sehr leicht unlesbaren code erzeugen und es ist nur 'syntaktischer zucker', also nichts, was man beim programmieren wirklich vermissen würde.
    🙂



  • pale dog schrieb:

    Tobias1984 schrieb:

    Hallo, ist es möglich in ansi c Operatoren zu überladen speziell für
    + - * /

    nein, es ist nicht möglich in C.
    in fricklersprachen wie c++ und C# geht das, aber bedenke: operatorüberladung macht mehr probleme als es vorteile bringt. man kann damit sehr leicht unlesbaren code erzeugen und es ist nur 'syntaktischer zucker', also nichts, was man beim programmieren wirklich vermissen würde.
    🙂

    So ein Schwachsinn. Operator Überladung macht in jeder Sprache Sinn, in der es Operatoren gibt. Weil a+b ist eben leserlicher als a.some_strange_add_method(b) .



  • pale dog schrieb:

    X macht mehr probleme als es vorteile bringt. man kann damit sehr leicht unlesbaren code erzeugen und es ist nur 'syntaktischer zucker', also nichts, was man beim programmieren wirklich vermissen würde.

    das selbe wird von lisp macros behauptet...

    atomkraft ist auch maechtig.

    goto gilt auch nur als boese, weil es in falschen haenden (sprich die der anfaenger) verheerende auswirkungen hat.

    und am ende gucken die angsthasen in die roehre, weil die anderen sich trauen und gewinnen.

    mit solchen maechtigen dingen hast du erst die moeglichkeit, mehr zu erreichen. mit der macht muss man eben verantwortungsvoll umgehen.

    aber bedenke: "gut" und "schlecht" sind menschliche bewertungen. operatorueberladung, makros, atomenergie... sind weder gut noch boese. deshalb sollte man sie gut einsetzen.



  • pale dog schrieb:

    operatorüberladung macht mehr probleme als es vorteile bringt. man kann damit sehr leicht unlesbaren code erzeugen und es ist nur 'syntaktischer zucker', also nichts, was man beim programmieren wirklich vermissen würde.

    NICHT die ANSI macht Code, sondern die Programmierer! Bei solchen Aussagen würden die Produktivitätsindizes deiner Firma tendenziell sinken! (Kurz gesagt: Deine Firma hätte keine Freude mit dir!)



  • rüdiger schrieb:

    Operator Überladung macht in jeder Sprache Sinn, in der es Operatoren gibt. Weil a+b ist eben leserlicher als a.some_strange_add_method(b) .

    es gibt den '+' operator schon, er tut genau das, was man von ihm erwartet: addieren.
    es besteht keine notwendigkeit, die bedeutung von '+' zu verändern, genau so wie es keinen sinn machen würde, die bedeutung von beliebigen schlüsselwörtern einer sprache zu überladen.
    🙂



  • pale dog schrieb:

    rüdiger schrieb:

    Operator Überladung macht in jeder Sprache Sinn, in der es Operatoren gibt. Weil a+b ist eben leserlicher als a.some_strange_add_method(b) .

    es gibt den '+' operator schon, er tut genau das, was man von ihm erwartet: addieren.
    es besteht keine notwendigkeit, die bedeutung von '+' zu verändern, genau so wie es keinen sinn machen würde, die bedeutung von beliebigen schlüsselwörtern einer sprache zu überladen.
    🙂

    👍
    Die Sprache "C" kennt keine Operatorüberladung und braucht auch keine! 🕶



  • c.rackwitz schrieb:

    atomkraft ist auch maechtig.

    überladene operatoren aber nicht :p

    btw: ich hätte nichts degegen, wenn selbstdefinierte operatoren im code als solche erkennbar wären. beispiel:

    a = b + c;   // addition oder nicht?
    a = b [+] c; // nicht zu verwechseln mit +
    


  • pale dog schrieb:

    rüdiger schrieb:

    Operator Überladung macht in jeder Sprache Sinn, in der es Operatoren gibt. Weil a+b ist eben leserlicher als a.some_strange_add_method(b) .

    es gibt den '+' operator schon, er tut genau das, was man von ihm erwartet: addieren.
    es besteht keine notwendigkeit, die bedeutung von '+' zu verändern, genau so wie es keinen sinn machen würde, die bedeutung von beliebigen schlüsselwörtern einer sprache zu überladen.
    🙂

    nenene du hast's nicht so ganz gerafft. in C++ gibts für eigene datenstrukturen (klassen) nämlich noch keinen überladenen '+' operator. woher soll man denn wissen was genau (also welche member) addiert werden sollen?? sowas MUSST du dir schon selbst schreiben.



  • ... schrieb:

    in C++ gibts für eigene datenstrukturen (klassen) nämlich noch keinen überladenen '+' operator. woher soll man denn wissen was genau (also welche member) addiert werden sollen?? sowas MUSST du dir schon selbst schreiben.

    das ist mir klar 😉
    genauso kann ich mir in C aus #defines einen eigenen BASIC-dialekt basteln. aber wozu 😕
    op-overloading ist bestenfalls gut für leute die dabei: http://www.ioccc.org/ mitmachen wollen 😃

    Goals of the Contest
    * To write the most Obscure/Obfuscated C program under the rules below.
    * To show the importance of programming style, in an ironic way.
    * To stress C compilers with unusual code.
    * To illustrate some of the subtleties of the C language.
    * To provide a safe forum for poor C code. 🙂



  • pale dog schrieb:

    genauso kann ich mir in C aus #defines einen eigenen BASIC-dialekt basteln. aber wozu 😕

    Nicht alles, dessen Zweck du nicht einsiehst (oder nicht einsehen willst), ist schlecht.

    op-overloading ist bestenfalls gut für leute die dabei: http://www.ioccc.org/ mitmachen wollen 😃

    Könntest du deine eigenartigen persönlichen Ansichten bitte in Zukunft etwas deutlicher als solche kennzeichnen?

    Oder willst du nur Troll des Monats werden?



  • MFK schrieb:

    pale dog schrieb:

    genauso kann ich mir in C aus #defines einen eigenen BASIC-dialekt basteln. aber wozu 😕

    Nicht alles, dessen Zweck du nicht einsiehst (oder nicht einsehen willst), ist schlecht.

    wenn du mal ein paar postings zurückblätterst, kannst du meinen vorschlag sehen, wie selbstdefinierte operatoren aussehen könnten...

    MFK schrieb:

    op-overloading ist bestenfalls gut für leute die dabei: http://www.ioccc.org/ mitmachen wollen 😃

    Könntest du deine eigenartigen persönlichen Ansichten bitte in Zukunft etwas deutlicher als solche kennzeichnen?

    was war daran undeutlich? 😕



  • Warum sollte es einen syntaktischen Unterschied geben, wenn ich zwei Integer addiere oder zwei Bignums? Das ist Schwachsinn in einer Objektorientierten Programmiersprache. Also entweder keine Operatoren oder überladbare Operatoren. Alles andere wirkt dirty zusammen gebastelt.

    Ganz zu schweigen von den Problemen bei generischer Programmierung.

    Aber du bist ja eh nicht an einer seriösen Diskussion interessiert, mein lieber vista :p



  • Kurze Zusammenfassung:
    * in C gibts keine Überladung
    * in Java gibts Überladung nur bei Methoden
    * in C++ kann man fast alles überladen
    * in Eiffel gibts Operatorüberladung, aber keine Methodenüberladung
    * in SML kann man gar nichts überladen, dafür aber beliebige eigene Operatoren definieren
    Offensichtlich widersprechen sich diese Ansätze vollkommen, aber jeder hat eine gute Begründung für seins. Wenn man sich dem Thema nähern will, sollte man diese Begründungen studieren.



  • rüdiger schrieb:

    Warum sollte es einen syntaktischen Unterschied geben, wenn ich zwei Integer addiere oder zwei Bignums?

    ja, aber da hast du wirklich die einzig sinnvolle anwendung hervorgekramt 😉
    doch wie sieht's in der realität aus? op-überladung (+) wird z.b. genommen, um strings zusammenzufügen (wobei das ist noch nicht mal des schlechteste beispiel).
    aber echt übel: denk doch mal an C++ iostreams, wie da die shift-operatorn missbraucht werden.
    *das* ist richtig mies!



  • erlaeutere uns doch bitte deinen masterplan. was willst du mit der dickkoepfigkeit bezwecken?



  • Hat ja nichts mehr mit C zu tun hier...



  • Dieser Thread wurde von Moderator/in Tim aus dem Forum ANSI C in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • c.rackwitz schrieb:

    erlaeutere uns doch bitte deinen masterplan. was willst du mit der dickkoepfigkeit bezwecken?

    ich versuche einfach nur zu erklären, warum ich op-überladung für überflüssig halte:
    der nutzen ist klein.
    die möglichkeit schwer lesbaren code zu schreiben ist riesengross.
    aber wie schon gesagt: gegen selbst definierte ops, sofern sie sich im quelltext von eingebauten ops unterscheiden, habe ich nichts einzuwänden...
    🙂



  • pale dog schrieb:

    rüdiger schrieb:

    Warum sollte es einen syntaktischen Unterschied geben, wenn ich zwei Integer addiere oder zwei Bignums?

    ja, aber da hast du wirklich die einzig sinnvolle anwendung hervorgekramt 😉
    doch wie sieht's in der realität aus? op-überladung (+) wird z.b. genommen, um strings zusammenzufügen (wobei das ist noch nicht mal des schlechteste beispiel).
    aber echt übel: denk doch mal an C++ iostreams, wie da die shift-operatorn missbraucht werden.
    *das* ist richtig mies!

    Das Einzige? o_0

    * Klassen fuer reelle Zahlen
    * Klassen fuer Vektoren
    * Klassen fuer Matrizen
    ....

    Und das waren jetzt nur die offensichtlichen Faelle. Warum verbieten wir nicht gleich Pointer, damit kann man ja echt richtig fiese Dinge tun. Oder verbieten, dass es mehr als eine return-Anweisung pro Funktion gibt... Oder noch besser, lass die Leute doch gleich mit Lego spielen, das ist wesentlich ungefaehrlicher o_0

    Nur weil irgendwer ein Konzept schlecht verwendet kannst du's doch nicht gleich verurteilen. Oder findest du Demokratie scheisse, nur weil in Italien mal Silvio Berlusconi gewaehlt wurde?


Anmelden zum Antworten