#include namespace My_region { class point { double x; double y; static int cont; int objnum; public: point(const double& =0.0, const double& =0.0); ~point(); static double scalar(const point&, const point&); }; int point::cont; point::point(const double& x0, const double& y0) { x = x0; y = y0; cout << "Costruito oggetto " << ++cont << " con i valori: " << x0 << " e " << y0 << '\n' ; objnum = cont; } point::~point() { cout << "Distrutto oggetto " << objnum << '\n'; cont--; } double point::scalar(const point& p1, const point& p2) { return p1.x*p2.x + p1.y*p2.y ; } } int main() { using My_region::point; char answer; do { point* ptr[2]; for (int i=0; i<2; i++) { cout << "Inserisci coordinate del punto " << i+1 << ": "; double x,y; cin >> x >> y; ptr[i] = new point (x,y); } cout << "Prodotto scalare: " << point::scalar(*ptr[0],*ptr[1]) << '\n' ; delete ptr[0]; delete ptr[1]; cout << "\nContinui (s/...) ? "; cin >> answer; cout << '\n' ; } while ( answer == 's' ); { point origine; cout << "Per ora l'oggetto e' ancora vivo\n"; } cout << "Adesso ha proprio finito!\n\n"; return 0; }