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