資源管理

#include <memory>
#include <iostream>
using namespace std;

class A{
	private:
		int n;
	public:
		A(int n_);
		~A();
		void f();
};

A::A(int n_): n(n_){
	cout << "class A whose value is " << n << " has been created." << endl;
}

A::~A(){
	cout << "class A whose value is " << n << " has been destroyed." << endl;
}

void A::f(){
	cout << n << endl;
}

void g(){
	A* a[5] = {0, 0, 0, 0, 0};
	auto_ptr<A> p[5]; //ここってインスタンス生成しちゃってるよね。
	try{
		for(int i=0; i < 5; i++){
			a[i] = new A(i*i);
			p[i] = auto_ptr<A>(a[i]);
		}
		for(int i=0; i < 5; i++){
			a[i]->f();
		}
	}catch(bad_alloc& e){
		cout << "Oh, no!" << endl;
	}
}


int main(){
	g();
	return 0;
}

ちょっと勉強したから書いてみたんだけど、途中のインスタンス生成がきもい。