資源管理
#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; }
ちょっと勉強したから書いてみたんだけど、途中のインスタンス生成がきもい。