構文
class class-name { public: class-name(class-name&& variable-name); // ムーブコンストラクター class-name& operator=(class-name&& variable-name); // ムーブ代入演算子オーバーロード };
ムーブコンストラクタとムーブ代入演算子オーバーロードはセットで定義することが推奨される。
実装例
struct Hoge final { public: // デフォルトコンストラクタ(なくてもいい) Hoge() = default; // ムーブコンストラクタ Hoge(Hoge&& other){ cout << "ムーブコンストラクタ" << endl; this->a = other.a; } // コピー代入演算子オーバーロード Hoge& operator=(const Hoge& obj){ cout << "コピー演算子オーバーロード" << endl; this->a = obj.a; return *this; } int a; };