Ein konstantes C++ Objekt darf nicht verändert werden:
const char blank = ' ';
...
blank = `\t`; // Fehler!
Genauso dürfen für konstante Klassenobjekte nur Elementfunktionen aufgerufen werden, die das Objekt nicht verändern. Solche Elementfunktionen müssen als const markiert werden:
class date
{ int day, month, year;
public:
...
int getday(void) const
{ return day;}
int changeyear(int y)
{ year = y;}
};
...
const date fix = today;
cout << fix.getday(); // OK.
fix.changeyear(2000); // Fehler!
Compiler:
non-const memberfunction date::changeyear
called for const object.
Compilation failed.
Experiment:
...
int changeyear (int y) const // Luege
{ year = y; }
...
CC:
error: assignment to const type.
g++:
warning: assignment to read-only member year.