TR1引入了shared_ptr,weak_ptr,scoped_ptr和unique_ptr等.
我想知道这些类型之间的各种转换/类型提升规则.
例如,将scoped_ptr分配给shared_ptr时会发生什么?这种转换是否可行/有意义以及此类转换的一些用例是什么?
(具体是否有表格?)
Jam*_*lis 12
首先,对您的问题进行一些更正:
scoped_ptr是Boost的一部分,不包含在C++ TR1或C++ 0x中(预计在C++ 0x unique_ptr中可以使用scoped_ptr传统使用的地方).
unique_ptr不是C++ TR1的一部分; 它是C++ 0x的一部分(因为它依赖于rvalue引用和移动语义,它们仅在C++ 0x中可用).
回答你的问题: shared_ptr并weak_ptr齐头并进.a拥有的对象shared_ptr也可以由a引用weak_ptr.它们是互补的.
A unique_ptr拥有其管理的对象的唯一所有权; 没有其他人可以拥有该对象的所有权.这与所有权语义相反shared_ptr:a unique_ptr,你有非共享的独特所有权; 与shared_ptr您共享,非独特的所有权.
你可以构建shared_ptr一个unique_ptr; 当你这样做时,unique_ptr失去了对象的所有权.这是有效的,因为您始终知道给定unique_ptr的始终是对象的唯一所有者,因此它能够释放该所有权.
一旦对象归a所有shared_ptr,就无法释放对象的所有权,因为无法保证给定shared_ptr的对象是该对象的唯一所有者.
| 归档时间: |
|
| 查看次数: |
6309 次 |
| 最近记录: |