C++相談室 part9
■ このスレッドは過去ログ倉庫に格納されています
0572デフォルトの名無しさん
NGNGストラウストラップ御大の言葉、「リソースの獲得は初期化」って言葉は知らんのかな?
コンストラクタでリソースを獲得して、デストラクタで解放する。そうすることで、
オブジェクトの生存期間とリソースの生存期間が一致するから、
リソースリークを減らせる。Create()で獲得してDestroy()で解放するような
機構だと、そのオブジェクトの機能を使う前にCreate()を行うことをプログラマが
保証しなくちゃならん(さらに、終了前にDestroy()を行うことも)けど、コンストラクタと
デストラクタなら、コンパイラが自働的に保証してくれる。
例外を避けるためにコンストラクタでリソース獲得をしないってのは、はっきり言って
本末転倒。コンストラクタでエラー報告をするために例外はある、ってのはさすがに
言い過ぎだろうけど、コンストラクタの例外を避けることのメリットはほとんど無いぞ。
って、ここまで書いて気づいたが、>>564はそれを知った上で、敢えて質問してるのか……?
だとしたら、俺個人としては、例外が使えないコンパイラで仕事をしなけりゃならん、
という状況でしか、そう言う設計はしない。
>>566
栞「たまにしか出ないから、例外って言うんですよ」
まあネタは置いといて。bad_allocはほったらかしかなぁ。bad_allocが来ても、
メモリがない状況でどんな対処すりゃいいのかわからんし。それ以外の例外は
キャッチして処理してるけど。
■ このスレッドは過去ログ倉庫に格納されています