Abgesehen davon, dass Sie den Lesern des Codes mitteilen, dass Sie beim Ändern dieser Variablen Fehler verursachen können (Sie können dazu Kommentare verwenden).
Nicht "darf"; wird Fehler in Ihrem Programm verursachen.
- Ein C ++ - Compiler erzwingt dies mit Kompilierungsfehlern und Diagnosemeldungen ("Compilerfehler"), ohne dass Kommentare erforderlich sind.
- Der AC-Compiler wird es größtenteils erzwingen , obwohl seine Standardbibliothek aufgrund von Legacy-Lücken wie z. B.
strchr
Lücken aufweist und einige eher milde implizite Konvertierungsregeln enthält, mit denen Sie const
Ness löschen können, ohne es ganz einfach zu bemerken. Nur weil Sie eine erfolgreiche Kompilierung erhalten haben, bedeutet dies nicht, dass Sie keine Fehler haben. Leider bedeutet dies, dass die Fehler subtile Fehler in Ihrem Programm sowie große, spektakuläre Abstürze sein können.
In jedem Fall enthält Ihr Programm garantiert einen Fehler .
Mir scheint, wenn Sie keine Variable ändern möchten, tun Sie dies einfach nicht.
Nun, das ist alles schön und gut, aber niemand ist perfekt. Programmierer machen Fehler. Auf diese Weise kann der Compiler - der (zumindest normalerweise nicht) niemals Fehler macht - Sie darauf hinweisen.
Dies ist besonders nützlich, wenn Sie eine Datenvariable verwenden, die viele, viele Codezeilen von dem Ort entfernt ist, an dem sie erstellt wurde. Je weiter es entfernt ist, desto einfacher ist es, es zu ändern, ohne zu bemerken, dass Sie es nicht sollten. Für große, komplexe Codebasen ist dies einfach ein Muss.
Sie erhalten ein neues Maß an Beweisbarkeit , Korrektheit und Stabilität in Ihrer Codebasis sowie eine große Menge möglicher Ursachen für wirklich subtile und böse Fehler. Es gibt auch große Optimierungsmöglichkeiten für Ihren Compiler (in einigen Fällen), wenn er weiß, dass sich ein Wert nach dem Kompilieren nicht ändert.
Wir könnten die Vorteile den ganzen Tag auflisten , aber Sie werden es wirklich nicht vollständig verstehen , bis Sie an einer solchen Codebasis gearbeitet haben.
In einer perfekten Welt wären const
standardmäßig alle Variablen vorhanden , und Sie müssten sie mit dem Schlüsselwort deklarieren mutable
, um sie ändern zu können. C ++ ist rückwärts.