Die const-Spezifikation erlaubt die Formulierung von Einschränkungen, deren Einhaltung vom Compiler überprüft wird.
Für Variablen:
char *p;
const char *p; // konstante Daten
char *const p; // konstanter Zeiger
const char *const p; // konstanter Zeiger
// + konstante Daten
class string
{ char *data;
public:
operator const char*() {return data;}
};
Verhindert, daß über das Funktionsergebnis Änderungen an
privaten Elemente vorgenommen werden.
dürfen auch auf konstante Objekte angewandt werden, da sie die Datenelemente nicht verändern dürfen.
Die const-Markierung kann auch zum Überladen benutzt werden:
class string
{ char *data;
public:
char & operator[](int i)
{ return data[i]; }
// die Version fuer const Objekte:
const char & operator[](int i) const
{ return data[i]; }
};
...
const str cstring = "Hello";
string str = "World";
str[0] = 'x'; // OK
cstr[0] = 'x'; // Fehler!