13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

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 />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!