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



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

struct SomeType
{
SomeType() = default;
~SomeType();

std::unique_ptr<int> ptr;
};

在cpp中,我们有:

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

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

如果这是析构函数中唯一不必要的代码行,那么这两种情况都会发生。所有成员的析构函数都是在父析构函数之后自动调用的。

如果你在析构函数中还有其他事情要做,那么它可能会很有用,并且/或者操作的确切顺序很重要。

不会发生双重删除。

最新更新