Они оба делают одно и то же. Похоже, версия Qt способна скрыться с указателем (QScopedPointer::take()
), что позволяет передавать права собственности другому лицу. Вы не можете сделать это с scoped_ptr
, но вы можете поменять оба вида.
boost::scoped_ptr
и QScopedPointer
также явно не копируются.
QScopedPointer
действительно имеет механизм, который позволяет вам передавать «удалитель» указателю. Фактически это открытый статический член данного класса, поэтому QScopedPointer
по-прежнему имеет размер только указателя. Это означает, что тип QScopedPointer
должен включать тип средства удаления.
Оба они устарели std::unqiue_ptr
в C ++ 0x.