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

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 477 — #515<br />

✐<br />

15.14. Ejercicios<br />

31. (Avanzado) Encu<strong>en</strong>tre exactam<strong>en</strong>te cuanto tiempo más es necesario para una<br />

llamada a una función virtual buscando <strong>en</strong> la información del l<strong>en</strong>guaje <strong>en</strong>samblador<br />

de su procesador o cualquier otro manual técnico y <strong>en</strong>contrando los<br />

pulsos de reloj necesarios para una simple llamada fr<strong>en</strong>te al número necesario<br />

de las instrucciones de las funciones virtuales.<br />

32. Determine el tamaño del VPTR (usando sizeof) <strong>en</strong> su implem<strong>en</strong>tación. Ahora<br />

herede de dos clases (her<strong>en</strong>cia múltiple) que cont<strong>en</strong>gan funciones virtuales.<br />

¿Se ti<strong>en</strong>e una o dos VPTR <strong>en</strong> la clase derivada<br />

33. Cree una clase con datos miembros y funciones virtuales. Escriba una función<br />

que mire <strong>en</strong> la memoria de un objeto de su clase y que imprima sus distintos<br />

fragm<strong>en</strong>tos. Para hacer esto será necesario experim<strong>en</strong>tar y de forma iterativa<br />

descubrir donde se <strong>en</strong>cu<strong>en</strong>tra alojado el VPTR del objeto.<br />

34. Imagine que las funciones virtuales no exist<strong>en</strong>, y modifique Instrum<strong>en</strong>t4.<br />

cpp para que use moldeado dinámico para hacer el equival<strong>en</strong>te de las llamadas<br />

virtuales. Esplique porque es una mala idea.<br />

35. Modifique StaicHierarchyNavigation.cpp para que <strong>en</strong> vez de usar el<br />

RTTI de <strong>C++</strong> use su propio RTTI via una función virtual <strong>en</strong> la clase base llamada<br />

whatAmI() y un <strong>en</strong>um type { Circulos, Cuadrados };.<br />

36. Comi<strong>en</strong>ce con PointerToMemberOperator.cpp del capítulo 12 y demuestre<br />

que el polimorfismo todavía funciona con punteros a miembros, incluso si<br />

operator->* está sobrecargado.<br />

477<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!