Z mojego punktu widzenia const
modyfikatory należy czytać od prawej do lewej. Z tego wynika, że:
const char*
jest wskaźnikiem, którego elementy char nie mogą być modyfikowane, ale sam wskaźnik może, a
char const*
jest stałym wskaźnikiem do mutable
znaków.
Ale otrzymuję następujące błędy dla następującego kodu:
const char* x = new char[20];
x = new char[30]; //this works, as expected
x[0] = 'a'; //gives an error as expected
char const* y = new char[20];
y = new char[20]; //this works, although the pointer should be const (right?)
y[0] = 'a'; //this doesn't although I expect it to work
Więc ... który to jest? Czy moje rozumienie lub kompilator (VS 2005) są błędne?