我閱讀RAII
原則,有關於它的一些問題。實際上,它封裝了資源。所以,請考慮類std::string
。它有一個constructorstring (const char* s);
。所以,就像智能指針(例如template explicit shared_ptr (U* p);)它需要一個指向資源的指針然後管理它。對於string
s這麼說是否正確?瞭解RAII對象
Q
瞭解RAII對象
0
A
回答
4
像智能指針(例如
shared_ptr
)它需要一個指向資源,然後管理它。它是正確的
不太。 shared_ptr
。就拿部分在到該指針分,而需要unique_ptr
獨佔所有權的對象的所有權。智能指針,weak_ptr
並不需要立即擁有,但它加入由shared_ptr
S投資對象的觀察員,並允許共享所有權稍後嘗試。
的一點是,這些智能指針採取由他們給出的指針所指示的現有對象的所有權。
std::string(const char*)
,在另一方面,使得NUL終止的字符串的副本到指針所指向,它於是具有的獨佔所有權。構造函數的指針參數所指向的原始文本與構造的對象string
沒有任何關聯;例如,對string
的修改不會影響該文本。分別地,將std::string
對象可以在內部的指針保持到動態分配緩衝器,存儲文本的副本,並且該緩衝器可被調整大小並更新(其他時間 - 爲足夠短的文本 - 它可被直接存儲在std::string
對象作爲優化)。銷燬時,std::string
將delete[]
任何內部指針仍在管理。他們從不泄漏記憶。
相關問題
- 1. ModelResetter RAII對象
- 2. 瞭解對象的壽命時間,範圍,RAII
- 3. 瞭解對象
- 4. 瞭解javascript對象
- 5. 瞭解JavaScript對象
- 6. 瞭解javascript對象
- 7. 單個容器中的RAII對象?
- 8. RAII對象恢復以前的值
- 9. 瞭解對象陣列
- 10. node.js:瞭解對象原型
- 11. 瞭解VBA對象變量
- 12. 瞭解Python類和對象
- 13. 瞭解underscore.js:_對象定義
- 14. 瞭解運行對象表
- 15. 瞭解Thrift Javascript對象
- 16. 瞭解Neo4j對象緩存
- 17. 瞭解Java中的對象
- 18. 瞭解一次性對象
- 19. 瞭解對象切片
- 20. 瞭解對象列表
- 21. 瞭解了的UIDatePicker對象NSDateFormatter行爲
- 22. 請求對象不解碼了urlencoded
- 23. 瞭解「未定義不是對象('this.props.navigation.navigate)」
- 24. 試圖瞭解cx_Oracle的LOB對象
- 25. 瞭解對象的建設和分配
- 26. 瞭解scala中的類和對象
- 27. 瞭解JVM中的對象開銷
- 28. 瞭解對象變量賦值行爲
- 29. 瞭解Android中的android.graphics.Camera對象
- 30. 瞭解jQuery的對象或HTMLDivElemts