[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