std :: shared_ptr: reset () против присвоения
Это основной вопрос, но я не нашел предыдущего поста об этом. Название следующего вопроса звучит так, как будто это тот же вопрос, что и мой, но сам вопрос не соответствует названию:лучше использовать 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()
?
РЕДАКТИРОВАТЬ: Позвольте мне перефразировать вопрос, чтобы лучше подчеркнуть его точку зрения. Вопрос: есть ли случай, когдаreset()
Позволяет ли нам достичь чего-то, что не так легко достичь без этого?