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

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 XIV — #14<br />

✐<br />

Índice g<strong>en</strong>eral<br />

14.5.2.2.1. Publicar los miembros heredados de forma<br />

privada . . . . . . . . . . . . . . . . . . . . . . 421<br />

14.6. Protected . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422<br />

14.6.1. Her<strong>en</strong>cia protegida . . . . . . . . . . . . . . . . . . . . . . . . . . 422<br />

14.7. Her<strong>en</strong>cia y sobrecarga de operadores . . . . . . . . . . . . . . . . . . . . 423<br />

14.8. Her<strong>en</strong>cia múltiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424<br />

14.9. Desarrollo increm<strong>en</strong>tal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424<br />

14.10.Upcasting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425<br />

14.10.1.¿Por qué «upcasting» . . . . . . . . . . . . . . . . . . . . . . . . 426<br />

14.10.2.FIXME Upcasting y el constructor de copia . . . . . . . . . . . . 426<br />

14.10.3.Composición vs. her<strong>en</strong>cia FIXME (revisited) . . . . . . . . . . . 429<br />

14.10.4.FIXME Upcasting de punteros y refer<strong>en</strong>cias . . . . . . . . . . . . 430<br />

14.10.5.Una crisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430<br />

14.11.Resum<strong>en</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431<br />

14.12.Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431<br />

15. Polimorfismo y Funciones virtuales 435<br />

15.1. Evolución de los programadores de <strong>C++</strong> . . . . . . . . . . . . . . . . . . 435<br />

15.2. Upcasting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436<br />

15.3. El problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437<br />

15.3.1. Ligadura de las llamadas a funciones . . . . . . . . . . . . . . . 437<br />

15.4. Funciones virtuales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438<br />

15.4.1. Ext<strong>en</strong>sibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439<br />

15.5. Cómo implem<strong>en</strong>ta <strong>C++</strong> la ligadura dinámica . . . . . . . . . . . . . . . 441<br />

15.5.1. Almac<strong>en</strong>ando información de tipo . . . . . . . . . . . . . . . . . 442<br />

15.5.2. Pintar funciones virtuales . . . . . . . . . . . . . . . . . . . . . . 443<br />

15.5.3. Detrás del telón . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445<br />

15.5.4. Instalar el vpointer . . . . . . . . . . . . . . . . . . . . . . . . . . 446<br />

15.5.5. Los objetos son difer<strong>en</strong>tes . . . . . . . . . . . . . . . . . . . . . . 446<br />

15.6. ¿Por qué funciones virtuales . . . . . . . . . . . . . . . . . . . . . . . . 447<br />

15.7. Clases base abstractas y funciones virtuales puras . . . . . . . . . . . . 448<br />

15.7.1. Definiciones virtuales puras . . . . . . . . . . . . . . . . . . . . . 452<br />

15.8. Her<strong>en</strong>cia y la VTABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453<br />

15.8.1. FIXME: Object slicing . . . . . . . . . . . . . . . . . . . . . . . . 455<br />

15.9. Sobrecargar y redefinir . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457<br />

15.9.1. Tipo de retorno variante . . . . . . . . . . . . . . . . . . . . . . . 458<br />

15.10.funciones virtuales y constructores . . . . . . . . . . . . . . . . . . . . . 460<br />

15.10.1.Ord<strong>en</strong> de las llamadas a los constructores . . . . . . . . . . . . . 460<br />

XIV<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!