👩‍💻 Реализация копирования и перемещения



В C++ механизмы копирования и перемещения позволяют эффективно управлять ресурсами объектов, избегая избыточных копий и улучшая производительность при передаче объектов:



1. Конструктор копирования — создает новый объект, копируя данные из существующего:

MyClass(const MyClass& other) {

data = new int(*other.data);

// Копируем данные из другого объекта

}




2. Конструктор перемещения — передает владение ресурсом от одного объекта к другому, избегая копирования данных:

MyClass(MyClass&& other) noexcept : data(other.data) {

other.data = nullptr;

// После перемещения, объект other не имеет данных

}




3. Оператор присваивания (копирования) — переназначает ресурсы, освобождая старые данные и копируя новые:

MyClass& operator=(const MyClass& other) {

if (this != &other) {

// Проверка на самоприсваивание

delete data; // Освобождаем старые ресурсы

data = new int(*other.data); // Копируем данные

}

return *this;

}




📣 C++ Ready | #техсобес