Код IT
← Каталог

Рекомендации по разработке на C++ — Перемещение и копирование

Фрагмент из «Рекомендации по разработке на C++»: Перемещение и копирование.

C++ main.cpp
class LargeDataBuffer 
{
public:
    // Конструктор перемещения
    LargeDataBuffer(LargeDataBuffer&& other) noexcept
        : data_(other.data_), size_(other.size_) 
    {
        other.data_ = nullptr;
        other.size_ = 0;
    }

    // Оператор присваивания перемещением
    LargeDataBuffer& operator=(LargeDataBuffer&& other) noexcept 
    {
        if (this != &other) {
            delete[] data_;
            data_ = other.data_;
            size_ = other.size_;
            other.data_ = nullptr;
            other.size_ = 0;
        }
        return *this;
    }

private:
    char* data_;
    size_t size_;
};
class LargeDataBuffer 
{
public:
    // Конструктор перемещения
    LargeDataBuffer(LargeDataBuffer&& other) noexcept
        : data_(other.data_), size_(other.size_) 
    {
        other.data_ = nullptr;
        other.size_ = 0;
    }

    // Оператор присваивания перемещением
    LargeDataBuffer& operator=(LargeDataBuffer&& other) noexcept 
    {
        if (this != &other) {
            delete[] data_;
            data_ = other.data_;
            size_ = other.size_;
            other.data_ = nullptr;
            other.size_ = 0;
        }
        return *this;
    }

private:
    char* data_;
    size_t size_;
};