martedì 5 agosto 2014

La variabile di classe genitrice, eguagliata alla classe derivata, contiene le proprietà della classe derivata?

Bene.
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