#include using namespace std; class Forma { public: virtual ~Forma() {} virtual float perimetro() = 0; virtual float area() = 0; virtual void print() { cout << " BOH" << endl; }; virtual int colore() { return 1; } int odore() { return 10; } private: }; class Quadrato : public Forma { public: Quadrato() { lato_ = 0; } Quadrato(float lato) { lato_ = lato ; } virtual ~Quadrato() { cout << "Muoio " << lato() << endl; } virtual float perimetro() { return lato()*4;} virtual float area() {return lato()*lato();} virtual void print() { cout << "Quadrato di lato " << lato() << " e colore " << colore() << endl; } float lato() { return lato_;} virtual int colore() { return 2; } int odore() { return 666; } private: float lato_; }; const float piGreco = 3.1415; class Cerchio : public Forma { public: Cerchio() { raggio_=0; } Cerchio(float raggio) {raggio_ = raggio; } virtual ~Cerchio() {} virtual float perimetro() { return piGreco*2*raggio();} virtual float area() {return piGreco*raggio()*raggio();} virtual void print() { cout << "Cerchio di raggio " << raggio() << " e colore " << colore() << endl; } float raggio() {return raggio_;} private: float raggio_; }; int main(){ //int l; Quadrato q(10); Cerchio c(3); Quadrato* pq = new Quadrato(); // Forma* pf; Forma* pf = new Quadrato(); q.print(); c.print(); cout << "-----" << endl; pf->print(); cout << "Odore " << pf->odore()<< endl; cout << "-----" << endl; //cout << "Lato " << pf->lato()<< endl; pq->print(); cout << "Lato " << pq->lato()<< endl; delete pq; delete pf; return 0; }