z6.3.2-delete.cc
class Point { public: double x, y; string name;
Point(string w, double xx, double yy) { cout << "constructor: " << w << endl;
name = w; x = xx; y = yy; }
~Point() { cout << "destructor: " << name << endl; }
void print() { cout << name << ": (" << x << "," << y << ")" << endl; } };
int main() { Point p1("p1",1,2); p1.print();
constructor: p1
p1: (1,2)
{ Point p2("p2",2,3); p2.print(); }
constructor: p2
p2: (2,3)
destructor: p2
Point *p3 = new Point("p3",3,4); (*p3).print(); p3->print();
constructor: p3
p3: (3,4)
p3: (3,4)
delete p3; // without this, p3 destructor would never be called
destructor: p3
}
destructor: p1