Я пытаюсь научиться использовать умные указатели и понимать право собственности. Когда я передаю auto_ptr
функции по значению, функция становится исключительным владельцем этого указателя. Поэтому, когда функция завершает работу, она удаляет указатель, который я ей передал.
Однако я получаю ошибку компиляции, когда пытаюсь сделать это с unique_ptr
, как будто назначение копирования отключено для unique_ptr
s. Передача unique_ptr
по ссылке, похоже, не передает права собственности, она просто дает функции ссылку на unique_ptr
.
Как мне получить поведение auto_ptr
с передачей права собственности функции для работы с unique_ptr
s? Я был бы признателен за ссылку на подробное руководство по unique_ptr
, поскольку до сих пор те, которые я читал, говорят только о auto_ptr
или говорят об интеллектуальных указателях, доступных с Boost, и, кажется, игнорируют unique_ptr
, потому что shared_ptr
покрывает его.