Re: Самоприсваивание и самоперемещение
От: Videoman Россия https://hts.tv/
Дата: 10.04.19 10:09
Оценка:
Здравствуйте, _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;
}
Отредактировано 10.04.2019 10:09 Videoman . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.