Сообщение Re: Самоприсваивание и самоперемещение от 10.04.2019 10:09
Изменено 10.04.2019 10:09 Videoman
Re: Самоприсваивание и самоперемещение
Здравствуйте, _NN_, Вы писали:
Общий шаблон такой:
Общий шаблон такой:
class MyClass
{
public:
MyClass(const MyClass& that);
MyClass(MyClass&& that) noexcept;
~MyClass() noexcept;
void swap(MyClass& that) noexcept;
MyClass& operator=(MyClass that) noexcept;
private:
OtherClass m_mem;
// ...
};
MyClass::MyClass(const MyClass& that)
: m_mem(that.m_mem)
// ...
{
}
MyClass::MyClass(MyClass&& that) noexcept
: m_mem(std::move(that.m_mem))
// ...
{
}
void MyClass::swap(MyClass& that) noexcept
{
using std::swap;
swap(m_mem, that.m_mem);
// ...
}
MyClass::~MyClass() noexcept
{
// ...
}
MyClass& MyClass::operator=(MyClass that) noexcept
{
swap(that);
return *this;
}
Re: Самоприсваивание и самоперемещение
Здравствуйте, _NN_, Вы писали:
Общий шаблон такой:
Общий шаблон такой:
class MyClass
{
public:
MyClass(const MyClass& that);
MyClass(MyClass&& that) noexcept;
~MyClass() noexcept;
void swap(MyClass& that) noexcept;
MyClass& operator=(MyClass that) noexcept;
private:
OtherClass m_mem;
// ...
};
MyClass::MyClass(const MyClass& that)
: m_mem(that.m_mem)
// ...
{
}
MyClass::MyClass(MyClass&& that) noexcept
: m_mem(std::move(that.m_mem))
// ...
{
}
MyClass::~MyClass() noexcept
{
// ...
}
void MyClass::swap(MyClass& that) noexcept
{
using std::swap;
swap(m_mem, that.m_mem);
// ...
}
MyClass& MyClass::operator=(MyClass that) noexcept
{
swap(that);
return *this;
}