#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;
}