在析构函数中对唯一指针调用重置的 C++ 语义

C++ Semantics of calling reset on a unique pointer in a destructor

假设我们在 hpp 文件中有一个带有唯一指针的简单结构:

struct SomeType
{
    SomeType() = default;
    ~SomeType();
    
    std::unique_ptr<int> ptr;
};

在 cpp 中我们有:

SomeType::~SomeType()
{
    ptr.reset();
}

这个析构函数是有用还是多余? memory/heap 是否有可能出现双重删除或其他不需要的副作用?

如果这是析构函数中唯一没有必要的代码行,它会以任何一种方式发生。所有成员析构函数在父析构函数之后自动调用。

如果您在析构函数中还有一些其他事情要做,这可能会有用and/or操作的确切顺序很重要。

不会出现双删