/
AirLexa
/
04
Обзор
Документация
Войти
/
AirLexa
/
04
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Lesson_08/Task_3/Task_3.cpp
56 строк
1 KB
AirLexa
исправление Task_3.cpp
05 мар 2026, 09:30
Верифицирован
05 мар 2026, 09:30
89ca631
Код
Авторство
О чём код?
#include <iostream> #include <windows.h> #include <vector> #include <memory> template<typename T> class my_ptr { private: T* ptr = nullptr; public: my_ptr(T* ptr) : ptr(ptr) {}; ~my_ptr() { delete ptr; } my_ptr(my_ptr<T>& p) = delete; my_ptr<T>& operator =(const my_ptr<T>& p) = delete; T* operator ->() const { if (ptr == nullptr) throw std::exception("Нулевой указатель!"); return ptr; } T& operator *() const { if (ptr == nullptr) throw std::exception("Нулевой указатель!"); return *ptr; } T* release() noexcept { T* result = nullptr; std::swap(result, ptr); return result; } }; int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); my_ptr<int> i(new int(2)); std::cout << "my_ptr = " << *i << std::endl; *i = 10; std::cout << "my_ptr = " << *i << std::endl; int* i2 = i.release(); std::cout << "i2 = " << *i2 << std::endl; delete i2; my_ptr<float> f(nullptr); try { *f = 10.0f; } catch (std::exception& e) { std::cout << e.what() << std::endl; } return 0; }