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