/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/cpp/cpp-506-1005-014/main.cpp
72 строки
2 KB
Spirzen
Code migration pack
09 июн 2026, 01:41
09 июн 2026, 01:41
cebc284
Код
Авторство
О чём код?
#include <iostream> #include <memory> class ManagedArray { private: int* data; size_t size; public: ManagedArray(size_t s) : size(s) { std::cout << "Выделение памяти под массив размером " << size << std::endl; data = new int[size]; for (size_t i = 0; i < size; ++i) { data[i] = static_cast<int>(i); } } ~ManagedArray() { std::cout << "Освобождение памяти массива" << std::endl; delete[] data; data = nullptr; } // Запрет копирования (чтобы избежать двойного удаления) ManagedArray(const ManagedArray&) = delete; ManagedArray& operator=(const ManagedArray&) = delete; // Разрешение перемещения ManagedArray(ManagedArray&& other) noexcept : data(other.data), size(other.size) { other.data = nullptr; other.size = 0; } ManagedArray& operator=(ManagedArray&& other) noexcept { if (this != &other) { delete[] data; data = other.data; size = other.size; other.data = nullptr; other.size = 0; } return *this; } void print() const { std::cout << "Массив: "; for (size_t i = 0; i < size; ++i) { std::cout << data[i] << " "; } std::cout << std::endl; } }; // Пример использования умного указателя (std::unique_ptr) void useSmartPointer() { std::unique_ptr<ManagedArray> ptr(new ManagedArray(5)); ptr->print(); // Память освободится автоматически при выходе из области видимости } int main() { { ManagedArray arr(3); arr.print(); // Деструктор вызывается здесь } useSmartPointer(); // Деструктор вызывается здесь return 0; }