5
A
回答
6
首先,我應該注意到它被廣泛認爲是一個名字不太好的成語。許多人更喜歡SBRM,它代表堆棧綁定資源管理。雖然我(勉強)只是因爲廣爲人知和使用而使用「RAII」,但我確實認爲SBRM能更好地描述真實的意圖。第二,當RAII是新的時候,它就像資源釋放一樣適用於收購。特別是,當時看到初始化發生在兩個步驟中是相當普遍的。你首先要定義一個對象,然後才動態分配與該對象相關的任何資源。很多風格指南提倡這一點,很大程度上是因爲在那個時候(在C++有異常處理之前)沒有好的方法來處理構造函數中的失敗。因此,風格指南經常說,構造者應該只做最低限度的工作,並且特別避免任何可能出現故障的東西 - 特別是分配資源(並且有些人仍然會這樣說)。
其中很多已經處理過的雖然釋放了這個資源,但是這並不像以前的做法那麼明顯。
相關問題
- 1. 爲什麼java.lang.Thread.join()方法的命名方式如此?
- 2. 爲什麼命名不同?
- 3. 爲什麼此rsync命令不同步?
- 4. 爲什麼此傳送命令失敗?
- 5. 爲什麼log4j重命名文件名?
- 6. 爲什麼case class被命名爲'case'?
- 7. 爲什麼Node.js命名爲Node.js?
- 8. 爲什麼subprocess.Popen類未命名爲Subprocess?
- 9. 爲什麼不將Array.prototype.some命名爲.any?
- 10. 爲什麼命名函數在未命名時不起作用?
- 11. 爲什麼Covariance和Contravariance這樣命名?
- 12. 爲什麼要命名返回參數?
- 13. 爲什麼沒有Microsoft.Win64命名空間?
- 14. 爲什麼我不能重命名列?
- 15. 爲什麼ASCII以大寫命名?
- 16. 爲什麼在並列命名juxt?
- 17. 爲什麼在.NET中命名線程?
- 18. 爲什麼命名List'1.cs
- 19. 爲什麼jqplot的行爲如此?
- 20. 爲什麼divs的行爲如此?
- 21. 爲什麼裁剪的行爲如此?
- 22. 爲什麼RAII和垃圾收集相互排斥?
- 23. 爲什麼Android佈局文件名稱如此有限?
- 24. 爲什麼Laravel關係的名稱習慣如此奇怪?
- 25. 爲什麼簽名密鑰如此昂貴?
- 26. 爲什麼我的Google Play排名如此之低?
- 27. 爲什麼在使用命名參數時不編譯此C#代碼?
- 28. 此代碼打印什麼?爲什麼?
- 29. 爲什麼文件名在網絡中被命名爲
- 30. 什麼是http-equiv屬性?它爲什麼命名?