ムーブコンストラクタとムーブ代入演算子オーバーロードの構文

構文

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;
};

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です