2

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()
4

1 回答 1

6

他们都做基本相同的事情。Qt 版本似乎可以通过指针 ( QScopedPointer::take()) 潜逃,它允许您将所有权转让给其他人。你不能这样做scoped_ptr,但你可以交换这两种。

boost::scoped_ptr并且QScopedPointerare 也是明确不可复制的。

QScopedPointer确实有一种机制允许您将“删除器”传递给指针。这实际上是给定类的公共静态成员,因此QScopedPointer仍然只有指针的大小。这确实意味着 的类型QScopedPointer必须包括删除器的类型。

std::unqiue_ptr在 C++0x 中,它们都已过时。

于 2011-08-18T19:53:45.270 回答