【发布时间】:2010-09-30 07:04:41
【问题描述】:
关于boost::shared_ptrs 的陷阱有几个有趣的问题。其中一个有用的提示是避免将boost::shared_ptr<Base> 和boost::shared_ptr<Derived> 指向Derived 类型的同一对象,因为它们使用不同的引用计数并可能过早地破坏对象。
我的问题:让boost::shared_ptr<T> 和boost::shared_ptr<const T> 指向同一个T 类型的对象是否安全,或者这会导致同样的问题吗?
【问题讨论】:
-
您能否为 Base/Derived 声明提供参考?
-
基础/派生是 100% 安全的。使用
get()是不安全的。这是没有 Base 的类似情况:shared_ptr<Derived> ptr(new Derived), ptr2(ptr.get());-- unsafe. -
@ybungalobill:谢谢,这是我一直认为安全的示例。你澄清了我对 boost::shared_ptr 工作原理的严重误解..
标签: c++ boost shared-ptr smart-pointers