Für was brauche ich const?



  • Hallo Forum,

    die Frage habe ich schon seit einiger Zeit und stelle sie einfach mal:

    Für was ist das Schlüsselwort "const" konkret gut?

    Ich weiß, dass dadurch Werte (und Zeiger usw.), einmal initialisiert, nicht mehr verändert werden können!

    ABER: Wenn ich selbst der Programmierer bin, weiß ich doch eigentlich selbst wann ich meine Sachen verändern will und wann nicht?! Deshalb stellt sich mir die "Sinnfrage" bei diesem Schlüsselwort!

    Danke euch für die Antworten!

    Grüße



  • naja das const macht das Programm qualitätiv besser.. man definiert funktionen variabeln etc. mit const , weil man von desgin her sicher geht das diese nicht verändert werden... der compiler prüft pingelig nach ob die constanten eingehalten werden.. es ist quaise auch ne hilfe für dich, damit zu die konsitenz der daten einhälst...



  • CONSTantin schrieb:

    ABER: Wenn ich selbst der Programmierer bin, weiß ich doch eigentlich selbst wann ich meine Sachen verändern will und wann nicht?!

    Ja, aber erinnerst Du Dich auch immer dran? Nein, tust Du in etwas größeren Programmen garantiert nicht. Durch 'const' verrätst Du dem Compiler aber, was Du vorhast, und der kann Dir dann unter die Arme greifen und erinnert Dich, sobald Du es vergessen hast. Denn: üblicherweise weist es es auf einen bösen logischen Fehler hin, wenn Du versuchst, eine Variable zu verändern, die Du eigentlich als nicht-veränderbar deklariert hast. Ohne 'const' wären solche Fehler nur extrem schwer zu finden.



  • CONSTantin schrieb:

    Für was ist das Schlüsselwort "const" konkret gut?

    Grundsätzlich wie von Boris schon aufgeführt um den Compiler informationen zu liefern die er einerseits überprüfen kann, und zum anderen sind auch Optimierungen mittels const möglich - die ohne const nicht sinnvoll wären. Sprich ein Hilfsmittel für einen selbst (Fehlermeldungen) und für die Optimierung.

    Zum weiteren kann es ja sein das mehrere Entwickler an einem Programm arbeiten. Dann ist es durchaus hilfreich, ohne den Code zu durchwühlen zu müssen, zu wissen ob ein Wert geändert wird oder nicht.

    CONSTantin schrieb:

    ABER: Wenn ich selbst der Programmierer bin, weiß ich doch eigentlich selbst wann ich meine Sachen verändern will und wann nicht?! Deshalb stellt sich mir die "Sinnfrage" bei diesem Schlüsselwort!

    Du musst ein Genie sein wenn du immer alles was du einmal geschrieben hast überblicken kannst. Sehr kritisch ist es wenn man große Objekte um unnötige Kopien zu vermeiden als Referenz übergibt. Bei einer const Referenz sehe ich sofort das ich sicher sein kann das keine Änderung erfolgt. Wenn ich nur einen Referenzwert sehe, muss ich mir überlegen ob ich die Gefahr der Änderungen wirklich in Kauf nehmen kann (und sonst wieder eine Kopie übergebe).

    Daher bin ich ein Anhänger von "Const Correctness" [1], [2]



  • Wenn ich selbst der Programmierer bin, weiß ich doch eigentlich

    ROFL
    Wenn du meinst.
    Arbeite bloss nie mit anderen zusammen. Und greif bloss nie Code an den du vor mehr als nem Monat geschreiben hast. Und arbeite bloss nie an Projekten die schonmal länger als ein paar Monate brauchen um fertig zu werden. Und ...

    Ach, pass einfach auf dass du nie irgendwas programmierst, dann passt das schon.


Log in to reply