Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 432 — #470<br />
✐<br />
Capítulo 14. Her<strong>en</strong>cia y Composición<br />
8. Modificar NameHiding.cpp añadi<strong>en</strong>do tres funciones sobrecargadas llamadas<br />
h() <strong>en</strong> Base y mostrar como redefini<strong>en</strong>do una de ellas <strong>en</strong> una clase derivada<br />
oculta las otras.<br />
9. Crear una clase StringVector que herede de vector y redefinir push_back<br />
y el operador [] para aceptar y producir string*. ¿Qué ocurre si int<strong>en</strong>ta utilizar<br />
push_back() un void*<br />
10. Escribir una clase que cont<strong>en</strong>ga muchos tipos y utilice una llamada a una función<br />
pseudo-constructor que utiliza la misma sintaxis de un constructor.Utilizarla<br />
<strong>en</strong> el constructor para inicializar los tipos.<br />
11. Crear una clase llamada Asteroid. Utilizar la her<strong>en</strong>cia para especializar la clase<br />
PStash del capítulo 13 (PStash.h y PStash.cpp) para que la acepte y retorne<br />
punteros a Asteroid. También modifique PStashTest.cpp para comprobar sus<br />
clases. Cambiar la clase para que PStash sea un objeto miembro.<br />
12. Repita el ejercicio 11 con un vector <strong>en</strong> vez de la clase PStash.<br />
13. En SynthesizedFunctions.cpp, modifique Chess para proporcionarle un constructor<br />
por defecto, un constructor copia y un operador de asignación. Demostrar<br />
que han sido escritos correctam<strong>en</strong>te.<br />
14. Crear dos clases llamadas Traveler y Pager sin constructores por defecto, pero<br />
con constructores que toman un argum<strong>en</strong>to del tipo string, el cual simplem<strong>en</strong>te<br />
lo copia a una variable interna del tipo string. Para cada clase, escribir correctam<strong>en</strong>te<br />
un constructor copia y el operador de asignación. Entonces cree la clase<br />
BusinessTraveler que hereda de Traveler y crear ub objeto miembro Pager<br />
d<strong>en</strong>tro ella. Escribir correctam<strong>en</strong>te el constructor por defecto, un constructor<br />
que tome una cad<strong>en</strong>a como argum<strong>en</strong>to, un constructor copia y un operador de<br />
asignación.<br />
15. Crear una clase con dos funciones miembro estáticas. Herede de estas clases y<br />
redefina una de las funciones miembro. Mostrar que la otra función se oculta<br />
<strong>en</strong> la clase derivada.<br />
16. Mejorar las funciones miembro de ifstream. En FName2.cpp, int<strong>en</strong>tar suprimirlas<br />
del objeto file.<br />
17. Utilice la her<strong>en</strong>cia privada y protegida para crear dos nuevas clases desde la<br />
clase base. Int<strong>en</strong>te convertir los objetos de las clases derivadas <strong>en</strong> la clase base.<br />
Explicar lo que ocurre.<br />
18. En Protected.cpp, añadir una función miembro <strong>en</strong> Derived que llame al miembro<br />
protegido de Base read().<br />
19. Cambiar Protected.cpp para que Derived utilice her<strong>en</strong>cia protegida. Compruebe<br />
si puede llamar a value() desde un objeto Derived.<br />
20. Crear una clase llamada SpaceShip con un metodo fly(). Crear Shuttle que hereda<br />
de SpaceShip y añadir el metodo land(). Creat un nuevo Shuttle, convertirlo<br />
por puntero o refer<strong>en</strong>ciaa SpaceShip e int<strong>en</strong>te llamar al metodo land(). Explicar<br />
los resultados.<br />
21. Modificar Instrum<strong>en</strong>t.cpp para añadir un método prepare() a Instrum<strong>en</strong>t. Llamar<br />
a prepare () d<strong>en</strong>tro de tune().<br />
432<br />
✐<br />
✐<br />
✐<br />
✐