Die C++ Core Guidelines fassen fünf Regeln für Konstanten und unveränderliche Objekte zusammen. Der am 27. August 2018 veröffentlichte Themenblock begründet, warum `const` nicht nur versehentliche Änderungen verhindert, sondern auch die Absicht einer Schnittstelle sichtbar macht.
Die Regeln Con.1 bis Con.5 empfehlen, Objekte grundsätzlich unveränderlich anzulegen, Memberfunktionen als `const` zu deklarieren und Zeiger sowie Referenzen auf konstante Daten zu übergeben. Für Werte, die bereits zur Übersetzungszeit berechnet werden können, ist `constexpr` vorgesehen.
Konstante Objekte und Methoden
Eine als `const` deklarierte Variable kann nach ihrer Initialisierung nicht versehentlich überschrieben werden. Bei einer Memberfunktion beschreibt `const`, dass der Aufruf den beobachtbaren Zustand des Objekts nicht verändert. Das verbessert die Lesbarkeit und gibt dem Compiler zusätzliche Informationen über den erlaubten Zugriff.
Die Regel Con.3 übergibt Pointer und Referenzen standardmäßig als Verweise auf konstante Daten, wenn die aufgerufene Funktion nichts verändern muss. Dadurch wird die Absicht im Typ ausgedrückt. In großen Engine-, Editor- und Werkzeugcodebasen erleichtert das die Prüfung von Besitz, Zuständen und Seiteneffekten.
Für `constexpr` nennen die Guidelines Werte, die zur Compile-Zeit berechnet werden können. `const` und `constexpr` ersetzen dabei keine Architekturregeln, bilden aber einen klaren Vertrag zwischen Implementierung und Aufrufer. Die Folge setzt die frühere Betrachtung der C++ Core Guidelines zu Fehlerpfaden fort.

