Ho una classe genitrice, non astratta: qualcosa che può generare eredi, ma che può esistere anche di per sè.
Dal momento che si può eguagliare una variabile di un tipo classe a un oggetto di una classe derivata, voglio vedere cosa è in comune fra la variabile di classe genitrice e la variabile di classe derivata.
Creo una classe genitrice di tipo "Medico" che sarebbe il medico generico, il quale non è un'idea astratta, ma può esistere nella realtà, quindi è da definire con una classe non astratta.
La classe derivata è "Radiologo", il quale possiede una variabile "specialita", non posseduta dalla classe genitrice, e mentre il Medico diagnostica visitando il Radiologo overloada il metodo con "referta le radiografie".
Istanziamo il Radiologo e poi creiamo una variabile di tipo Medico, che eguagliamo a Radiologo, per vedere se contiene la variabile "specialita".
#include "iostream" using namespace std; class Medico{ public: void diagnostica(){ cout << "visita" << endl; getchar(); } }; class Radiologo:public Medico{ public: char * specialita; Radiologo(){ specialita="radiologia"; } void diagnostica(){ cout << "referta le radiografie" << endl; getchar(); } }; void main(){ Radiologo Pippo; cout << Pippo.specialita << endl; getchar(); Medico mdc; mdc=Pippo; cout << mdc.specialita << endl; getchar(); }
1>c:\users\antonello\documents\visual studio 2010\projects\test1\test1\foglio.cpp(37): error C2039: 'specialita': non è un membro di 'Medico'Dunque la variabile di classe genitrice, eguagliata a quella di classe derivata, non contiene le proprietà della classe derivata.
Nessun commento:
Posta un commento