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 247 — #285<br />

✐<br />

8.6. Resum<strong>en</strong><br />

los métodos y para los objetos <strong>en</strong> sí mismos. Sólo puede llamar a métodos volatile<br />

desde objetos volatile.<br />

La razón por la que isr() no se puede usar como una rutina de servicio de interrupción<br />

(ISR) es que <strong>en</strong> un método, la dirección del objeto actual (this) debe pasarse<br />

secretam<strong>en</strong>te, y una ISR no requiere argum<strong>en</strong>tos. Para resolver este problema<br />

se puede hacer que el método isr() sea un método de clase (static), un asunto<br />

que se trata <strong>en</strong> el [FIXME:capitulo 10].<br />

La sintaxis de volatile es idéntica a la de const, así que por eso se suel<strong>en</strong><br />

tratar juntos. Cuando se usan combinados se conoc<strong>en</strong> como cuantificador c-v (constvolatile).<br />

8.6. Resum<strong>en</strong><br />

La palabra const permite la posibilidad de definir objetos, argum<strong>en</strong>tos de función,<br />

valores de retorno y métodos como constantes y elimina el uso del preprocesador<br />

para la sustitución de valores sin perder ninguna de sus v<strong>en</strong>tajas. Todo ello ofrece<br />

una forma adicional de comprobación de tipos y seguridad <strong>en</strong> la programación. El<br />

uso de la llamada «constancia exacta» (const correctness) es decir, el uso de const <strong>en</strong><br />

todo lugar donde sea posible, puede ser un salvavidas para muchos proyectos.<br />

Aunque ignore a const y continue usando el estilo tradicional de C, const existe<br />

para ayudarle. El [FIXME:capitulo 11] utiliza las refer<strong>en</strong>cias ext<strong>en</strong>sam<strong>en</strong>te, y se<br />

verá más sobre la importancia del uso de const <strong>en</strong> los argum<strong>en</strong>tos de funciones.<br />

8.7. Ejercicios<br />

Las soluciones a los ejercicios se pued<strong>en</strong> <strong>en</strong>contrar <strong>en</strong> el docum<strong>en</strong>to electrónico<br />

titulado «The Thinking in <strong>C++</strong> Annotated Solution Guide», disponible por poco<br />

dinero <strong>en</strong> www.BruceEckel.com.<br />

1. Cree 3 valores <strong>en</strong>teros constantes, después súmelos todos para producir un valor<br />

que determine el tamaño <strong>en</strong> la definición de un vector. Int<strong>en</strong>te compilar el<br />

mismo código <strong>en</strong> C y vea qué sucede (g<strong>en</strong>eralm<strong>en</strong>te se puede forzar al compilador<br />

de <strong>C++</strong> para que funcione como un compilador de C utilizando alguna<br />

opción de linea de comandos).<br />

2. Probar que los compiladores de C y <strong>C++</strong> realm<strong>en</strong>te tratan las constantes de<br />

modo difer<strong>en</strong>te. Cree una constante global y úsela <strong>en</strong> una expresión global<br />

constante, compile dicho código <strong>en</strong> C y <strong>C++</strong>.<br />

3. Cree definiciones constantes para todos los tipos del l<strong>en</strong>guaje y sus variantes.<br />

Úselos <strong>en</strong> expresiones con otras constantes para hacer definiciones de constantes<br />

nuevas. Compruebe que compilan correctam<strong>en</strong>te.<br />

4. Cree una definición de constante <strong>en</strong> un archivo de cabecera, incluya dicho archivo<br />

<strong>en</strong> dos archivos .cpp, compílelos y <strong>en</strong>lácelos con el compilador de <strong>C++</strong>.<br />

No deberían ocurrir errores. Ahora int<strong>en</strong>te el mismo experim<strong>en</strong>to con el compilador<br />

de C.<br />

5. Cree una constante cuyo valor se determine <strong>en</strong> tiempo de ejecución ley<strong>en</strong>do<br />

la hora <strong>en</strong> que comi<strong>en</strong>za la ejecución del programa (puede usar ).<br />

Después, <strong>en</strong> el programa, int<strong>en</strong>te leer un segundo valor de hora, almac<strong>en</strong>arlo<br />

<strong>en</strong> la constante y vea qué sucede.<br />

247<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!