参考这篇 MSDN 文章,最后(部分:鲁棒编程)指出,
为防止资源泄漏,请始终在移动赋值运算符中释放资源(例如内存、文件句柄和套接字)。
如果将移动分配改为实现为:
MemoryBlock& operator=(MemoryBlock&& other)
{
if (this != &other)
{
std::swap(_data, other._data);
std::swap(_length, other._length);
}
return *this;
}
当“其他”引用超出范围时,不会释放右值的“_data”吗?