次のコードがあるとしましょう
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をチェックすることでうまくいくはずですが、もっと良い方法はありますか?