[C con Clase] Duda sobre cin.getline

Steven Davidson srd4121 en njit.edu
Lun Abr 4 18:41:18 CEST 2011


Hola Gilberto,

On 4/4/2011 8:42 AM, Gilberto Cuba Ricardo wrote:
>> No aconsejo definir constantes simbólicas, sino del lenguaje de
>> C++; es decir,
>
>> const int TAM = 64;
>
> ¿Por qué es aconsejas utilizar este tipo de constantes? ¿Algún detalle
> de rendimiento o de optimización para la compilación del código?
>

La razón es que el compilador puede aplicar las reglas semánticas del 
lenguaje en esta definición. Principalmente, puede aplicar las reglas 
semánticas para los tipos de datos, para asegurar su robustez. Como 
sabemos a estas alturas, C++ es un lenguaje fuertemente tipificado.

De esta forma, dejamos bien establecido, con el lenguaje, que el tipo 
del dato 'TAM' es 'const int'. El problema de '#define TAM' es que el 
compildor no se involucra, sino el precompilador, por lo que no hay 
oportunidad de aplicar las reglas gramaticales a las constantes 
simbólicas, sino a sus definiciones que puede provocar errores 
difícilmente detectables.

>> Además, como vas a usar esta constante en la clase 'Libreria',
>> tiene más lógica que pertenezca a ella como miembro.
>
> Si fuera esto, lo entiendo completamente y coincido contigo.
>

Bueno, esto es añadido al caso del programa de Jovanny. Sin embargo, 
ciertamente nos viene muy bien que la constante sea más propio de C++ 
que como directiva del precompilador, especialmente al usar tal 
constante en una clase.

La otra ventaja, aunque no viene al caso del programa original, es que 
podemos usar un puntero a 'const int' para que apunte a esta constante. 
En este caso, la constante ocupará memoria como si fuese una variable, 
pero sin poder variar: una "variable constante". Sé que es incongruente 
decir esto, pero así es la informática, a veces :)


Espero haber aclarado la duda.

Steven





Más información sobre la lista de distribución Cconclase