どのスレに書けばいいのかわからなかったので、この駄スレを使って、
C++でのイディオム実装の方法を考えさせてください。

いま俺が興味があるのは、More Effective C++ や Exceptional C++ に
書いてある「リソースの獲得は初期化」ってイディオムです。

CFile file;// not MFC 自作クラスのCFileです
if(file.Load("test.txt") == false) return ERROR;
string str = file.ReadOneLine();// 一行読み込み

みんなこんな感じのコードを書いてると思うんですけど。
「リソースの獲得は初期化」を実装すると、こうなるんじゃないかと。

if(CFile::IsExist("test.txt")) return ERROR;
CFile file("test.txt");
string str = file.ReadOneLine();// 一行読み込み

CFileはファイルを処理するクラスなんですから、CFileのインスタンスが
存在するときには、いつでもそのインスタンスでひとつのファイルを
処理できなくちゃいけないんじゃないかと。逆に言えば、いつでも処理できる
という状態を基準にして、インスタンスを生成しなければならないん
じゃないかと。そのためには、いつもコンストラクタでリソースを確保して、
デストラクタでリソースを解放して。Load,Read,Open,Closeなんて関数は
いっさい作らない(Reloadはアリだと思うけど)。
というのが、「リソースの獲得は初期化」ってイディオムを実装したスタイル
なんじゃないかと思うんですけど、どうでしょう?

「リソースの獲得は初期化」でグーグっても一件しか出てこないのは
どういうわけなんでしょ。みんなこんなことは考えてないんですか。
このイディオムを守ると、リソースリークが激減しそうな予感がするのは
俺だけなんですか。

なんか、何を聞きたいのかさっぱりわからない文章になってますけど、
とりあえずこのイディオムの実装の仕方とかを考えてる人と話したいんです…。