Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 223 — #261<br />
✐<br />
8: Constantes<br />
El concepto de constante (expresión con la palabra reservada const)<br />
se creó para permitir a los programadores marcar la difer<strong>en</strong>cia<br />
<strong>en</strong>tre lo que puede cambiar y lo que no. Esto facilita el control y la<br />
seguridad <strong>en</strong> un proyecto de programación.<br />
Desde su orig<strong>en</strong>, const ha sido utilizada para difer<strong>en</strong>tes propósitos. Mi<strong>en</strong>tras<br />
tanto FIXME:it trickled back <strong>en</strong> el l<strong>en</strong>guaje C <strong>en</strong> el que su significado cambió. Todo<br />
esto puede parecer un poco confuso al principio, y <strong>en</strong> este capítulo apr<strong>en</strong>derá cuándo,<br />
porqué y cómo usar la palabra reservada const. Hacia el final se expone una<br />
disertación sobre volatile, que es familia de const (ambos se refier<strong>en</strong> a los cambios)<br />
y su sintaxis es idéntica.<br />
El primer motivo para la creación de const parece que fue eliminar el uso de la<br />
directiva del preprocesador #define para sustitución de valores. Desde <strong>en</strong>tonces se<br />
usa para punteros, argum<strong>en</strong>tos de funciones, tipos de retorno, objetos y funciones<br />
miembro. Todos ellos ti<strong>en</strong><strong>en</strong> pequeñas difer<strong>en</strong>cias pero su significado es conceptualm<strong>en</strong>te<br />
compatible. Se tratarán <strong>en</strong> las sigui<strong>en</strong>tes secciones de este capítulo.<br />
8.1. Sustitución de valores<br />
Cuando se programa <strong>en</strong> C, se usa librem<strong>en</strong>te el preprocesador para crear macros<br />
y sustituir valores. El preprocesador simplem<strong>en</strong>te hace un reemplazo textual y no<br />
realiza ninguna comprobación de tipo. Por ello, la sustitución de valores introduce<br />
pequeños problemas que se pued<strong>en</strong> evitar usando valores constantes.<br />
El uso más frecu<strong>en</strong>te del preprocesador es la sustitución de valores por nombres,<br />
<strong>en</strong> C es algo como:<br />
#define BUFSIZE 100<br />
BUFSIZE es un nombre que sólo existe durante el preprocesado. Por tanto, no<br />
ocupa memoria y se puede colocar <strong>en</strong> un fichero de cabecera para ofrecer un valor<br />
único a todas las unidades que lo utilic<strong>en</strong>. Es muy importante para el mant<strong>en</strong>imi<strong>en</strong>to<br />
del código el uso de sustitución de valores <strong>en</strong> lugar de los también llamados «números<br />
mágicos». Si usa números mágicos <strong>en</strong> su código. no solam<strong>en</strong>te impedirá al lector<br />
conocer su proced<strong>en</strong>cia o significado si no que complicará innecesariam<strong>en</strong>te la edición<br />
del código si necesita cambiar dicho valor.<br />
La mayor parte del tiempo, BUFSIZE se comportará como un valor ordinario,<br />
pero no siempre. No ti<strong>en</strong>e información de tipo. Eso puede esconder errores difíciles<br />
de localizar. <strong>C++</strong> utiliza const para eliminar estos problemas llevando la sustitución<br />
223<br />
✐<br />
✐<br />
✐<br />
✐