僕がC++をいいなぁと思う理由の一つに、RAIIが使えるという点がありました。 ただ最近RAIIに対して懐疑的に思えてきたので、そのことを書きたいと思います。 RAIIというのはオブジェクトのコンストラクタでファイルの初期化やロックの取得などリソースの獲得を行い、デストラクタでファイルのクローズやロックの開放など、リソースの開放を行うテクニックです。明示的にclose処理等を書く必要がないので、ファイルの閉じ忘れ、ロックの開放し忘れを防ぐことができます。 また処理の途中で例外の発生などの意図しない挙動が起きた際にもリソースが開放されることが保障されており、頑健なコードを書くことが可能となります。 Javaなどのガベージコレクションを持つ言語ではどのタイミングでオブジェクトが破棄されるかわらかないので、ファイルハンドルを開きっぱなしにしたり、ロックを持ち続けてしまう可能性もあってこのテク