sabato 2 agosto 2014

Seguiamo l'esempio di Wikipedia per quanto riguarda il polimorfismo.
Abbiamo una classe astratta Animale, e due classi derivate da questa, Cane e Gatto.
Creiamole...
#include "iostream"
using namespace std;

class Animale{
public:
	virtual void CosaMangia()=0;
};

class Cane: public Animale{
public:
	void CosaMangia(){
		cout << "Osso" << endl;
		getchar();
	}
};

class Gatto: public Animale{
public:
	void CosaMangia(){
		cout << "Pesce" << endl;
		getchar();
	}
};
Ecco: proviamo a istanziare...
void main(){
	Animale * mioAnimale;
	mioAnimale= new Cane();
	mioAnimale->CosaMangia();
	delete mioAnimale;
	mioAnimale=new Gatto();
	mioAnimale->CosaMangia();
	delete mioAnimale;

}
Ecco l'output:
Osso

Pesce




Ora dovrei costruire una funzione che prende come parametro un puntatore di tipo Animale...

void funzione(Animale * animal){
	animal->CosaMangia();
}

void main(){
	Cane * mioCane=new Cane();
	Gatto * mioGatto=new Gatto();
	funzione(mioCane);
	funzione(mioGatto);
}
E funziona:
Osso

Pesce


Nessun commento:

Posta un commento