这是一个基本问题,但我没有找到关于它的先前帖子.以下问题的标题听起来可能与我的问题相同,但问题本身与标题不匹配:使用shared_ptr.reset还是operator =?
我对reset()成员函数的目的感到困惑std::shared_ptr:除了赋值运算符之外,它还有什么作用呢?
具体来说,给定定义:
auto p = std::make_shared<int>(1);
Run Code Online (Sandbox Code Playgroud)
以下两行是否相同:
p = std::make_shared<int>(5);
p.reset(new int(5));
Run Code Online (Sandbox Code Playgroud)这些怎么样:
p = nullptr;
p.reset();
Run Code Online (Sandbox Code Playgroud)如果两条线在两种情况下都相同,那么目的是reset()什么?
编辑:让我重新说一下这个问题,以便更好地强调它的观点.问题是:是否有一种情况reset()可以让我们在没有它的情况下实现一些不容易实现的事情?