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 450 — #488 ✐ Capítulo 15. Polimorfismo y Funciones virtuales función en una clase sea declarada como virtual pura, la VTABLE estará incompleta. Si la VTABLE de una clase está incompleta, ¿qué se supone que debe hacer el compilador cuando alguien intente crear un objeto de esa clase No sería seguro crear un objeto de esa clase abstracta, por lo que se obtendría un error de parte del compilador. Dicho de otra forma, el compilador garantiza la pureza de una clase abstracta. Hacer clases abstractas asegura que el programador cliente no puede hacer mal uso de ellas. Aquí tenemos Instrument4.cpp modificado para usar funciones virtuales puras. Debido a que la clase no tiene otra cosa que no sea funciones virtuales, se la llama clase abstracta pura: //: C15:Instrument5.cpp // Pure abstract base classes #include using namespace std; enum note { middleC, Csharp, Cflat }; // Etc. class Instrument { public: // Pure virtual functions: virtual void play(note) const = 0; virtual char* what() const = 0; // Assume this will modify the object: virtual void adjust(int) = 0; }; // Rest of the file is the same ... class Wind : public Instrument { public: void play(note) const { cout

✐ ✐ ✐ “Volumen1” — 2012/1/12 — 13:52 — page 451 — #489 ✐ 15.7. Clases base abstractas y funciones virtuales puras void play(note) const { cout

✐<br />

✐<br />

✐<br />

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

✐<br />

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

void play(note) const {<br />

cout

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

Saved successfully!

Ooh no, something went wrong!