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