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()
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()
他们都做基本相同的事情。Qt 版本似乎可以通过指针 ( QScopedPointer::take()
) 潜逃,它允许您将所有权转让给其他人。你不能这样做scoped_ptr
,但你可以交换这两种。
boost::scoped_ptr
并且QScopedPointer
are 也是明确不可复制的。
QScopedPointer
确实有一种机制允许您将“删除器”传递给指针。这实际上是给定类的公共静态成员,因此QScopedPointer
仍然只有指针的大小。这确实意味着 的类型QScopedPointer
必须包括删除器的类型。
std::unqiue_ptr
在 C++0x 中,它们都已过时。