10

インターネットを検索したところ、ムーブ コンストラクターを定義する 3 つの方法が見つかりました。

  1. コンパイラに依存:

    T(T&& other) = default;
    
  2. 逆参照thisポインタ:

    T(T&& other) {
      *this = std::move(other);
    }
    
  3. すべてのメンバーを明示的に再割り当てします。

    T(T&& other) {
      T.a = other.a;
      T.b = other.b;
      //...
    }
    

どれが正しい方法ですか?(そして、2番目のものは正しいですか?)

4

2 に答える 2

1
T(T&& other)
: data(0) // initialize members
{
    swap(other); // where the class has a member function swap or std::swap(this->data, other.data)
}
于 2013-08-10T14:40:06.067 に答える