移动构造函数c ++

时间:2016-01-23 19:25:29

标签: c++ constructor

做移动构造函数的正确方法是什么?

class A{
...some stuff...
private:
    int i;
    std::string str;
};

A::A(A &&a)
{
    *this = std::move(a);
};

A::A(A &&a)
{
    this->str = std::move(a.str);
};

在第二种情况下,std :: move()int值是否有用?

1 个答案:

答案 0 :(得分:6)

应该是

A::A(A&& other)
    : i{other.i},
      str{std::move(other.str)} {
  // nop
}

这是移动构造函数的默认实现。