2012-04-10 10 views
5

私がこのイディオムについて知っているのは、リソースを使用しているオブジェクトが範囲外になった後にリソースが解放されることを保証するので便利です。言い換えればなぜRAIIの名前がついていますか?

、それはデ獲得デ初期の詳細ですが、なぜこのイディオムはそれが道の名前は?

答えて

6

最初に、それはよく知られていない慣用句とみなされます。多くの人々は、Stack Bound Resource Managementの略であるSBRMを好んでいます。私は(漠然と)「RAII」を広く知られて使用されているという理由だけで使用していますが、私はSBRMが本当の意図をはるかによく説明していると思います。

第2に、RAIIが新しくなったとき、それはリソースを解放することと同じくらい獲得に適用されました。特に、初期化が2つのステップで行われることはかなり一般的でした。最初にオブジェクトを定義し、そのオブジェクトに関連付けられたリソースを後で動的に割り当てるだけです。多くのスタイルガイドはこれを主張しました。主にその時(C++が例外処理を行う前に)、コンストラクタの失敗に対処する良い方法がなかったからです。したがって、スタイル・ガイドでは、コンストラクターは最小限の作業しかしておらず、具体的には失敗するようなものは避けなければならないと述べています。

相当数の人がすでにを処理していますが、デストラクタ内のリソースはであるため、以前の練習とは明確な違いはありませんでした。

関連する問題