const string * == const string * const



  • überzeugt mich alles nicht. Die "programmer's intention" klar auszudrücken ist zumindest mir wichtiger.


  • Mod

    großbuchstaben schrieb:

    Die "programmer's intention" klar auszudrücken ist zumindest mir wichtiger.

    Da musste ich echt schmunzeln, bei dem Gedanken dass in diesem Thread mindestens zwanzig mal angedeutet wurde dass dadurch keine Intention ausgedrückt wird, denn dem Caller ist es ~~sch***~~schnurzegal ob die Kopie verändert wird und in der Deklaration ist es dem Callee egal.



  • ja klar, einen Parameter nicht als Rückgabe verwenden zu wollen ist ja auch keine Intention 🙄



  • großbuchstaben schrieb:

    ja klar, einen Parameter nicht als Rückgabe verwenden zu wollen ist ja auch keine Intention 🙄

    Es ist ja nicht so, dass die Intention durch das fehlende const nicht ausgedrückt wird. Sie ist ja so oder so klar erkennbar.
    Ein const davor hinzuschreiben bringt lediglich eine bereits vorhandene Information nochmal zum Ausdruck, hat allerdings zur Folge, dass
    a) der Leser, der das nicht gewohnt ist - d.h. die Mehrheit, verwirrt ist.
    b) der Implementierer eingeschränkt ist, da er nicht kopieren kann, da er die Kopie nicht veändern kann.
    c) man unnötigerweise alle Funktionen ohne Outputparameter - d.h. die Mehrheit, mit komplett unnötigen Informationen vollklatscht, die die Zeilenlänge erhöhen, mehr zu tippen sind und den Lesefluss stören.



  • ad a) was ist an einem const verwirrend ?

    ad b) ???

    ad c) Bei mir nicht. Spätestens ab 3 Parameter bekommt bei mir jeder Parameter seine eigene Zeile, meistens schon ab 2.


  • Mod

    großbuchstaben schrieb:

    ad a) was ist an einem const verwirrend ?

    "Hey, Peter, meiner Freundin fehlt komischerweise ein Höschen. Schmeißt' mal ein Bier rüber?"
    <Peter schmeißt das Bier> "Ja und weiter?"
    "Nichts."
    "Äh, ok...?"
    Peter ist verwirrt. Wollte sein Freund ihm irgendetwas andeuten? Warum hat er das wohl gesagt? Denkt er, Peter klaut die Höschen seiner Freundin?

    Für den Rest des Abends bleibt das stehts in Peters Hinterkopf.
    ~
    Edit: Logik korrigiert.~



  • großbuchstaben schrieb:

    ad a) was ist an einem const verwirrend ?

    Es lässt ihn inne halten und überlegen. Sollte das vielleicht eine Referenz werden? Was macht das const da?

    ad b) ???

    Fataler Fail meinerseits.
    Meinte: , da er die Kopie nicht verändern kann.



  • Nathan schrieb:

    Meinte: , da er die Kopie nicht verändern kann.

    Wieso nicht? In der Definition kann er ja das const weglassen.


  • Mod

    nwp3 schrieb:

    In der Definition kann er ja das const weglassen.

    Auch deswegen ist const bei der Funktionsdeklaration so ein Schwachsinn: Es kann falsche Implementierungsdetails impizieren.



  • nwp3 schrieb:

    Nathan schrieb:

    Meinte: , da er die Kopie nicht verändern kann.

    Wieso nicht? In der Definition kann er ja das const weglassen.

    Außer bei inlines und Templates.
    Und schon hat man wieder einen Sonderfall.

    @großbuchstaben:
    Was sagst du zu

    man unnötigerweise alle Funktionen ohne Outputparameter - d.h. die Mehrheit, mit komplett unnötigen Informationen vollklatscht

    .
    Du bist dort bisher nur auf die Zeilenlänge eingegangen.


  • Mod

    Außer bei inlines und Templates.

    Das ist doch völlig falsch?
    Edit: 💡
    Solltest du trotzdem ein wenig klarer schreiben.



  • Heute hab ichs aber.
    Außer bei inline u.d Templates, wo (bei mir jedenfalls) Deklaration und Definition nicht getrennt werden.


Anmelden zum Antworten