Это основной вопрос, но я не нашел предыдущего сообщения об этом. Название следующего вопроса звучит так, как будто это может быть тот же вопрос, что и мой, но сам вопрос не соответствует названию: лучше использовать shared_ptr.reset или operator =?
Я запутался в цели функции reset()
члена std::shared_ptr
: что она вносит в дополнение к оператору присваивания?
Чтобы быть конкретным, учитывая определение:
auto p = std::make_shared<int>(1);
-
Являются ли следующие две строки эквивалентными:
p = std::make_shared<int>(5); p.reset(new int(5));
-
Как насчет этих:
p = nullptr; p.reset();
Если две строки эквивалентны в обоих случаях, то в чем цель reset()
?
EDIT: Позвольте мне перефразировать вопрос, чтобы лучше подчеркнуть его точку. Возникает вопрос: существует ли случай, когда reset()
позволяет нам достичь чего-то, что не так легко достижимо без него?