martedì 26 agosto 2014

Far eseguire all'istanza della classe derivata il metodo overridato al modo della classe base in C++

Vediamo di fare un discorso di ereditarietà, in C# e in C++, parallelo...

In C++, se c'è un overriding, la classe derivata esegue il metodo overriddato...
#include "iostream"
using namespace std;


class Classe{
public:
 char * nome;
 Classe(){}
 Classe(char * N){
  nome=N;
 }
 void stampaNome(){
  cout << "Nome della classe genitrice: " << nome << endl;
  getchar();
 }
};

class Derivata:public Classe{
public:
 Derivata(){}
 Derivata(char *N):Classe(N){}
 void stampaNome(){
  cout << "Nome della classe derivata: " << nome << endl;
  getchar();
 }
};
void main(){
 Classe miaClasse("Io sono la classe base");
 Derivata miaDerivata("Io sono la classe derivata");

 miaClasse.stampaNome();
 miaDerivata.stampaNome();
} 
Nome della classe genitrice: Io sono la classe base

Nome della classe derivata: Io sono la classe derivata



Se io voglio che l'istanza della classe Derivata esegua il metodo della classe genitrice:
.....

void main(){
 Classe miaClasse("Io sono la classe base");
 Derivata miaDerivata("Io sono la classe derivata");

 miaClasse.stampaNome();
 miaDerivata.stampaNome();

 Classe vrb;
 vrb=miaDerivata;
 vrb.stampaNome();
}
Nome della classe genitrice: Io sono la classe base

Nome della classe derivata: Io sono la classe derivata

Nome della classe genitrice: Io sono la classe derivata


Devo eguagliare l'istanza della classe derivata a una variabile della classe base.

Nessun commento:

Posta un commento