Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO Pensar en C++ (Volumen 1) - Grupo ARCO

arco.esi.uclm.es
from arco.esi.uclm.es More from this publisher
13.01.2015 Views

✐ ✐ ✐ “Volumen1” — 2012/1/12 — 13:52 — page 468 — #506 ✐ Capítulo 15. Polimorfismo y Funciones virtuales Para simplificar las cosas se crea todo en el fichero cabecera, la definición (requerida) del destructor virtual puro es introducida en línea el el fichero cabecera, y pop() también está en línea aunque podría ser considearado como demasiado largo para ser incluido así. Los objetos Link (lista) ahora manejan punteros a Object en vez de punteros a void, y la Stack (pila) sólo aceptará y devolverá punteros a Object. Ahora Stack es mucho más flexible, ya que puede manejar un montón de tipos diferentes pero además es capaz de destruirá cualquier objeto dejado en la pila. La nueva limitación (que será finalmente eliminada cuando las plantillas se apliquen al problema en el capítulo 16) es que todo lo que se ponga en la pila debe ser heredado de Object. Esto está bien si se crea una clase desde la nada, pero ¿qué pasa si se tiene una clase como string y se quiere ser capaz de meterla en la pila En este caso, la nueva clase debe ser al mismo tiempo un string y un Object, lo que significa que debe heredar de ambas clases. Esto se conoce como herencia múltiple y es materia para un capítulo entero en el Volumen 2 de este libro (se puede bajar de www.BruceEckel.com). cuando se lea este capítulo, se verá que la herencia múltiple genera un montón de complejidad, y que es una característica que hay que usar con cuentagotas. Sin embargo, ésta situación es lo suficiéntemente simple como para no tener problemas al usar herencia múltiple: //: C15:OStackTest.cpp //{T} OStackTest.cpp #include "OStack.h" #include "../require.h" #include #include #include using namespace std; // Use multiple inheritance. We want // both a string and an Object: class MyString: public string, public Object { public: ~MyString() { cout

✐ ✐ ✐ “Volumen1” — 2012/1/12 — 13:52 — page 469 — #507 ✐ 15.11. Sobrecarga de operadores

✐<br />

✐<br />

✐<br />

“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 469 — #507<br />

✐<br />

15.11. Sobrecarga de operadores<br />

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

Saved successfully!

Ooh no, something went wrong!