如果我可以选择在QScopedPointer
和boost::scoped_ptr
之间进行选择,那么在以下情况下哪一个会做得最好:
1. QScopedPointer<QObject> Vs boost::scoped_ptr<QObject>
2. QScopedPointer<QtContainer> Vs boost::scoped_ptr<QtContainer>
3. QScopedPointer::data() Vs boost::scoped_ptr::get()
答案 0 :(得分:6)
他们两者基本上都是一样的。 Qt版本似乎能够使用指针(QScopedPointer::take()
)潜逃,这允许您将所有权转让给其他人。你不能用scoped_ptr
做到这一点,但你可以交换这两种。
boost::scoped_ptr
和QScopedPointer
也明确是不可复制的。
QScopedPointer
确实有一种机制允许您将“删除器”传递给指针。这实际上是给定类的公共静态成员,因此QScopedPointer
仍然只是指针的大小。它确实意味着QScopedPointer
的类型必须包含删除者的类型。
它们都被C ++ 0x中的std::unqiue_ptr
淘汰了。