QScopedPointer vs boost :: scoped_ptr [选择哪一个]

时间:2011-08-18 19:39:08

标签: qt boost qscopedpointer

如果我可以选择在QScopedPointerboost::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()

1 个答案:

答案 0 :(得分:6)

他们两者基本上都是一样的。 Qt版本似乎能够使用指针(QScopedPointer::take())潜逃,这允许您将所有权转让给其他人。你不能用scoped_ptr做到这一点,但你可以交换这两种。

boost::scoped_ptrQScopedPointer也明确是不可复制的。

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

它们都被C ++ 0x中的std::unqiue_ptr淘汰了。