重複の可能性:
移動したオブジェクトはどのように使用できますか?
C ++ 11の「movedfrom」オブジェクトの有効な状態を構成するものは何ですか?
C ++ 11で移動セマンティクスを実装する場合、移動元オブジェクトを安全な状態のままにする必要がありますか、それとも「ジャンク」状態のままにすることができますか?
たとえば、次のC ++ 11ラッパーのrawFILE*
リソースへの移動コンストラクターを実装するための推奨オプションは何ですか?
// C++11 wrapper to raw FILE*
class File
{
FILE* m_fp;
public:
// Option #1
File(File&& other)
: m_fp(other.m_fp)
{
// "other" left in a "junk" state
}
// Option #2
File(File&& other)
: m_fp(other.m_fp)
{
// Avoid dangling reference in "other"
other.m_fp = nullptr;
}
...
};