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