#include <iostream > #include <string > using namespace std; class A { static int cnt; int id; string name; public: A( string s) { id = cnt++; name = s; cout << ”new obj: ” << s << ’[’ << id << ’]’ << endl; } A() { id = cnt++; name = ””; cout << ”new obj: ” << ’[’ << id << ’]’ << endl; } ˜A() { cout << ”dead obj: ” << name << ’[’ << id << ’]’ << endl; } }; int main() { A ∗a; a = new A [3] ( ”obj x” ); delete [] a; a = new A [3] ( ”obj y” ); for( int i = 0; i < 3; i++) { delete &a[i]; } a = new A [3]; delete [] a; return 0; } int A::cnt = 0;
|
new obj: obj x[0]
new obj: obj x[1]
new obj: obj x[2]
dead obj: obj x[2]
dead obj: obj x[1]
dead obj: obj x[0]
new obj: obj y[3]
new obj: obj y[4]
new obj: obj y[5]
dead obj: obj y[3]
dead obj: obj y[4]
dead obj: obj y[5]
new obj: [6]
new obj: [7]
new obj: [8]
dead obj: [8]
dead obj: [7]
dead obj: [6]
|