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 220 — #258<br />
✐<br />
Capítulo 7. Sobrecarga de funciones y argum<strong>en</strong>tos por defecto<br />
7.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 una clase Text que cont<strong>en</strong>ga un objeto string para que guarde el texto de<br />
un fichero. Póngale dos constructores: un constructor por defecto y un constructor<br />
que tome un argum<strong>en</strong>to de tipo string que sea el nombre del fichero<br />
que se vaya a abrir. Cuando se utilice el segundo constructor, abra el fichero<br />
y ponga su cont<strong>en</strong>ido <strong>en</strong> el atributo string. Añada un método llamado cont<strong>en</strong>ts()<br />
que retorne el string para que, por ejemplo, se pueda imprimir. En<br />
main() abra un fichero utilizando Text e imprima el cont<strong>en</strong>ido <strong>en</strong> pantalla.<br />
2. Cree una clase Message con un constructor que tome un sólo string con un<br />
valor por defecto. Cree un atributo privado string y asigne <strong>en</strong> el constructor el<br />
argum<strong>en</strong>to string al atributo string. Cree dos métodos sobrecargados llamados<br />
print(): uno que no tome argum<strong>en</strong>tos y que imprima simplem<strong>en</strong>te el m<strong>en</strong>saje<br />
guardado <strong>en</strong> el objeto, y el otro que tome un argum<strong>en</strong>to string, que imprima<br />
el m<strong>en</strong>saje interno además del argum<strong>en</strong>to. ¿Ti<strong>en</strong>e s<strong>en</strong>tido utilizar esta aproximación<br />
<strong>en</strong> vez de la utilizada por el constructor<br />
3. Descubra cómo g<strong>en</strong>erar código <strong>en</strong>samblador con su compilador y haga experim<strong>en</strong>tos<br />
para deducir el esquema de decoración de nombres.<br />
4. Cree una clase que cont<strong>en</strong>ga cuatro métodos con 0, 1, 2 y 3 argum<strong>en</strong>tos de tipo<br />
int respectivam<strong>en</strong>te. Cree un main() que haga un objeto de su clase y llame<br />
a cada método. Ahora modifique la clase para que t<strong>en</strong>ga sólo un método con<br />
todos los argum<strong>en</strong>tos por defecto. ¿Eso cambia su main()<br />
5. Cree una función con dos argum<strong>en</strong>tos y llámela desde main(). Ahora haga<br />
que uno de los argum<strong>en</strong>tos sea un argum<strong>en</strong>to de rell<strong>en</strong>o (sin id<strong>en</strong>tificador) y<br />
compruebe si necesita hacer cambios <strong>en</strong> main().<br />
6. Modifique Stash3.h y Stash3.cpp para que el constructor utilice argum<strong>en</strong>tos<br />
por defecto. Pruebe el constructor haci<strong>en</strong>do dos versiones difer<strong>en</strong>tes de un<br />
objeto Stash.<br />
7. Cree una nueva versión de la clase Stack (del Capítulo 6) que cont<strong>en</strong>ga el<br />
constructor por defecto al igual que antes, y un segundo constructor que tome<br />
como argum<strong>en</strong>tos un array de punteros a objetos y el tamaño del array. Este<br />
constructor debería recorrer el array y poner cada puntero <strong>en</strong> la pila (Stack).<br />
Pruebe su clase con un array de string’s.<br />
8. Modifique SuperVar para que haya #ifdef’s que <strong>en</strong>glob<strong>en</strong> el código de v-<br />
artype tal como se describe <strong>en</strong> la sección sobre <strong>en</strong>umeraciones. Cambie vartype<br />
como una <strong>en</strong>umeración pública (sin ejemplares) y modifique print()<br />
para que requiera un argum<strong>en</strong>to de tipo vartype que le indique qué ti<strong>en</strong>e qué<br />
hacer.<br />
9. Implem<strong>en</strong>te Mem2.h y asegúrese de que la clase modificada todavía funciona<br />
con MemTest.cpp.<br />
10. Utilice la clase Mem para implem<strong>en</strong>tar Stash. Note que debido a que la implem<strong>en</strong>tación<br />
es privada y por tanto oculta al programador cli<strong>en</strong>te, no necesita<br />
modificar el código de prueba.<br />
220<br />
✐<br />
✐<br />
✐<br />
✐