//Esempio di come si usa un puntatore ad una classe #include using namespace std; #include class Rettangolo { //Rettangolo e' il nome di un nuovo tipo double x, y; //sono dati privati public: void set_values (double, double); // dichiarazione di questo metodo pubblico. Questo invia un messaggio all'oggetto double area () {return (x*y);} // Qui definisco gia' la funzione area !! double perimetro () { return (2 * ( x + y) );} }; void Rettangolo::set_values (double a, double b) { x=a; y=b; } int main () { Rettangolo rettan1, * rettan2, * rettan3;//istanzio un oggetto di tipo Rettangolo e due puntatore a due oggetti di tipo Rettangolo rettan1.set_values (2.0, 4.0); //membro set_values dell'oggetto rettan1 cout << "rettan1 area = " << rettan1.area() << "; rettan1 perimetro = " << rettan1.perimetro() << endl; rettan2 = new Rettangolo; rettan2 -> set_values (5.0, 6.0); // membro set_values dell'oggetto puntato da rettan2 cout << "*rettan2 area = " << rettan2->area() << "; *rettan2 perimetro = " << rettan2->perimetro() << endl; cout << "(*rettan2) area = " << (*rettan2).area() << "; (*rettan2) perimetro = " << (*rettan2).perimetro() << endl; rettan3 = &rettan1; // rettan3 = indirizzo di rettan1 cout << "*rettan3 area = " << rettan3->area() << "; *rettan3 perimetro = " << rettan3->perimetro() << endl; Rettangolo * rettan4 = new Rettangolo [2]; //puntatore ad un array di due oggetti di tipo Rettangolo // rettan4[0] primo oggetto puntato da rettan4; rettan4[1] secondo oggetto puntato da rettan4 rettan4 -> set_values (4.0, 6.0); rettan4[1].set_values (10.0, 60.0); cout << "rettan4[0] area = " << rettan4[0].area() << "; rettan4[0] perimetro = " << rettan4[0].perimetro() << endl; cout << "rettan4[1] area = " << rettan4[1].area() << "; rettan4[1] perimetro = " << rettan4[1].perimetro() << endl; delete [] rettan4; // libera la memoria allocata dinamicamente dall'array di due oggetti delete rettan2; // libera la memoria allocata dinamicamente da rettan2 !! return (0); }