Ahm*_* U3 2 c++ smart-pointers c++11
可以将weak_ptr 与shared_ptr 一起使用。但我想知道是否可以创建一个引用同一个对象的 shared_ptr 和 unique_pointer 。如果是,必须遵循哪个规则?
如果您为同一个对象创建 aunique_ptr和 a shared_ptr,它们将不会相互了解。因此,您最终会遇到“双重释放”错误,更不用说当另一个指针已被释放时您可能会无意中取消引用另一个指针。
简而言之,不要这样做。如果您需要将所有权从 unique_ptr 转移到 shared_ptr 或反之亦然,请release()在创建“新”指针时调用“旧”指针。
对于您关于“将遵循哪个规则”的问题,答案是两者兼而有之。每个智能指针都会遵循自己的规则,但整体系统行为将是错误的。就像在调用delete自己之前或之后从原始指针创建单个智能指针一样。
请注意,相同的建议适用于创建两个unique_ptrs 或两个shared_ptr指向同一个原始指针的 s。您混合智能指针类型的事实并不真正相关。
| 归档时间: |
|
| 查看次数: |
1640 次 |
| 最近记录: |