C/Visual C - ¿ Para que vale la palabra reservada const ?

 
Vista:

¿ Para que vale la palabra reservada const ?

Publicado por Tito (1 intervención) el 17/02/2005 17:34:55
Pues eso ¿para que vale "const" ?. Yo pense que era para declarar variables que no podian ser modificadas, pero si hago

const int valor=7;
printf("%d",valor);

valor=9;
printf("%d",valor);

me modifica correctamente el valor de la variable const. Yo pensaba que ni siquiera deberia compilar, o en tal caso que mostrara el valor sin modificar, pero si lo ejecuto me imprime un 7 y un 9, es decir, si modifica el valor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:¿ Para que vale la palabra reservada const ?

Publicado por Ricardo Faggella (4 intervenciones) el 22/02/2005 00:16:48
Te comento que comprobé tu ejemplo (por las dudas) y no me pasó lo que comentas. NO ME PERMITE ALTERAR EL const (o sea que es igual que en Pascal y otros).

Con qué compilas? Si es con Borland 3.xx no entiendo qué ocurre. Salvo que tengas pinchado el compilador.

Pero si te anda no te preocupes y seguí adelante...

Saludos: ROF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿ Para que vale la palabra reservada const ?

Publicado por fernando.gomez (1603 intervenciones) el 22/02/2005 00:49:36
La verdad está raro el error. Sin embargo, hay algo que quizás podemos tomar en cuenta.

C++ cuenta con dos peculiaridades. La primera, si no mal recuerdo, es un vestigio de las primeras implementaciones de C++, que actualmente no tiene mucha utilidad: el modificador "mutable". La palabra reservada const provee una forma de declarar que un objeto no es modificable. También puede ser usado en los métodos de las clases para indicar que éstos no modificarán sus objetos. Por otro lado, la palabra reservada "mutable", poco usada hoy en día, provee una forma de permitir modificaciones a miembros particulares de objetos constantes. Es decir, aún cuando un objeto se declare como constante, invocar a un método no constante (que altere el propio objeto constante) no producirá error, cuando dicho método no constante altere miembros declarados como "mutable".

La otra es el empleo de const_cast. Esto lo que hace es que le "quita" al operando los modificadores de "const" y "volatile" donde aplique. Sencillo, puedes convertir un objeto constante a no constante.

Si
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿ Para que vale la palabra reservada const ?(2)

Publicado por fernando.gomez (1603 intervenciones) el 22/02/2005 00:51:11
Sin embargo, por el ejemplo que das, evidentemente ninguna de estas dos opciones aplicaría. Yo también hice la prueba de compilar tu código con Visual C++ y DevC++ en Windows, y con GCC y G++ en Linux, y me mandaron los respectivos mensajes de error. Te recomendaría que buscases en la documentación de tu compilador. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar