假设我们有以下代码
class Image
{
public:
Image(const std::string & path)
{
pBitmap_ = FreeImage_Load( imageFormat, pathname.c_str() );
}
~Image()
{
FreeImage_Unload(pBitmap_);
}
private:
FIBITMAP * pBitmap_;
};
Image(Image && rhs) 将如何实现?移动 dtor 后仍然在 rhs 上调用,这不会产生预期的效果?我想像
Image::Image( Image && rhs )
{
pBitmap_ = std::move(rhs.pBitmap_);
rhs.pBitmap_ = nullptr;
}
然后在 dtor 中检查 null 应该可以解决问题,但是有更好的方法吗?