現在shared_ptr
在tr1中,您認爲使用std::auto_ptr
會怎樣?它們都有不同的用例,但auto_ptr
的所有用例也可以用shared_ptr
來解決。您是否會放棄auto_ptr
或在您想明確表示只有一個班級在任何給定時間點擁有所有權的情況下繼續使用它?std :: auto_ptr的使用習慣或僅使用shared_ptr?
我的看法是,使用auto_ptr
可以增加代碼的清晰度,正好通過添加細微差別和代碼設計的指示,但另一方面,它在培訓新程序員時又增添了一個微妙的問題:他們需要理解智能指針和他們工作的細節。當你在任何地方只使用一個智能指針時,你可以制定一個規則'將所有指針包裝在shared_ptr
'中並且完成它。
你對此有何看法?
scoped_ptr有其用途,即不需要傳輸的單一所有權。在這些情況下,它應該代替auto_ptr。但是,在單一所有權轉移語義是適當的情況下,仍然應該使用auto_ptr。 :-) – 2008-10-13 09:33:59
什麼使scoped_ptr比const auto_ptr更好?在Exceptional C++中有一個關於auto_ptr的項目,特別是關於const auto_ptr的一個段落;從閱讀有關scoped_ptr我沒有看到比const auto_ptr任何優勢。 – Roel 2008-10-13 12:16:52
`auto_ptr`可能會產生所有權。通常情況下,這不是必需的。基本上,`scoped_ptr`只爲給定塊中的任意指針實現RAII。 – 2008-10-13 13:37:09