Según tengo entendido, los const
modificadores deben leerse de derecha a izquierda. De eso, lo entiendo:
const char*
es un puntero cuyos elementos char no se pueden modificar, pero el puntero en sí sí puede, y
char const*
es un puntero constante a los mutable
caracteres.
Pero obtengo los siguientes errores para el siguiente código:
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
Entonces ... ¿cuál es? ¿Mi comprensión o mi compilador (VS 2005) son incorrectos?