我阅读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