#include <iostream>
#include <utility>
class MyClass {
public:
int* data;
// Конструктор
MyClass(size_t size) : data(new int[size]) {
std::cout << "Resource allocated\n";
}
// Деструктор
~MyClass() {
delete[] data;
std::cout << "Resource deallocated\n";
}
// Конструктор перемещения
MyClass(MyClass&& other) noexcept : data(other.data) {
other.data = nullptr;
}
// Оператор перемещения
MyClass& operator=(MyClass&& other) noexcept {
if (this != &other) {
delete[] data;
data = other.data;
other.data = nullptr;
}
return *this;
}
// Запрещаем копирование
MyClass(const MyClass&) = delete;
MyClass& operator=(const MyClass&) = delete;
};
int main() {
MyClass obj1(10); // Создание объекта
MyClass obj2 = std::move(obj1); // Перемещение ресурса от obj1 к obj2
return 0;
}