Me pregunto si alguien puede explicar lo siguiente para mí: Si escribo¿Asignar una variable de puntero a una const int en C++?
int i = 0;
float* pf = i;
me sale un error de compilación (gcc 4.2.1):
error: invalid conversion from ‘int’ to ‘float*’
Tiene sentido - que son, obviamente, dos tipos completamente diferentes. Pero si en cambio escribo
const int i = 0;
float* pf = i;
Se compila sin error. ¿Por qué debería el 'const' hacer una diferencia en el lado derecho de la tarea? ¿No es parte de la idea de la palabra clave 'const' poder aplicar restricciones de tipo para valores constantes?
Cualquier explicación que he podido encontrar me parece un poco falsa. Y ninguna de mis explicaciones también explica el hecho de que
const int i = 1;
float* pf = i;
no se compila. ¿Alguien puede ofrecer una explicación?