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 203 — #241<br />

✐<br />

6.9. Ejercicios<br />

La seguridad durante la codificación es una cuestión importante <strong>en</strong> <strong>C++</strong>. La inicialización<br />

y la limpieza son una parte importante, pero también verá otras cuestiones<br />

de seguridad más adelante <strong>en</strong> este libro.<br />

6.9. 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. Escriba una clase simple llamada Simple con un constructor que imprima algo<br />

indicando que se ha invocado. En main() creae un objeto de esa clase.<br />

2. Añada un destructor al Ejercicio 1 que imprima un m<strong>en</strong>saje indicado que se ha<br />

llamado.<br />

3. Modifique el Ejercicio 2 de modo que la clase cont<strong>en</strong>ga un miembro int. Modifique<br />

el constructor para que tome un argum<strong>en</strong>to int que se almac<strong>en</strong>e <strong>en</strong> el<br />

atributo. Tanto el constructor como el destructor deberán imprimir el valor del<br />

<strong>en</strong>tero como parte se su m<strong>en</strong>saje, de modo que se pueda ver cómo se crean y<br />

destruy<strong>en</strong> los objetos.<br />

4. Demuestre que los destructores se invocan incluso cuando se utiliza goto para<br />

salir de un bucle.<br />

5. Escriba dos bucles for que impriman los valores de 0 a 10. En el primero, defina<br />

el contador del bucle antes del bucle, y <strong>en</strong> el segundo, defina el contador<br />

<strong>en</strong> la expresión de control del for. En la segunda parte del ejercicio, modifique<br />

el id<strong>en</strong>tificador del segundo bucle para que t<strong>en</strong>ga el mismo nombre del el<br />

contador del primero y vea que hace el compilador.<br />

6. Modifique los ficheros Handle.h, Handle.cpp, y UseHandle.cpp del capítulo<br />

5 para que us<strong>en</strong> constructores y destructores.<br />

7. Use inicialización de agregados para crear un array de double <strong>en</strong> el que se indique<br />

el tamaño del array pero no se d<strong>en</strong> sufici<strong>en</strong>tes elem<strong>en</strong>tos. Imprima el array<br />

usando sizeof para determinar el tamaño del array. Ahora cree un array de<br />

double usando inicialización de agregados y conteo automático. Imprima el<br />

array.<br />

8. Utilice inicialización de agregados para crear un array de objetos string. Cree<br />

una Stack para guardar esas cad<strong>en</strong>as y recorra el array, apilando cada cad<strong>en</strong>a<br />

<strong>en</strong> la pila. Finalm<strong>en</strong>te, extraiga las cad<strong>en</strong>as de la pila e imprima cada una de<br />

ellas.<br />

9. Demuestre el conteo automático e inicialización de agregados con un array de<br />

objetos de la clase creada <strong>en</strong> el Ejercicio 3. Añada un método a la clase que imprima<br />

un m<strong>en</strong>saje. Calcule el tamaño del array y recórralo, llamando al nuevo<br />

método.<br />

10. Cree una clase sin ningún constructor, y demuestre que puede crear objetos con<br />

el constructor por defecto. Ahora cree un constructor explícito (que t<strong>en</strong>ga un<br />

argum<strong>en</strong>to) para la clase, e int<strong>en</strong>te compilar de nuevo. Explique lo que ocurre.<br />

203<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!