構文
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;
};
コメントを残す