Различия
Показаны различия между двумя версиями страницы.
— | smart_pointer [2025/07/06 12:40] (текущий) – создано - внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== smart pointer c++ пример реализации ====== | ||
+ | {{htmlmetatags> | ||
+ | metatag-description=(Пример реализации умного указателя (smart pointer) на C++) | ||
+ | }} | ||
+ | |||
+ | < | ||
+ | < | ||
+ | **Умный указатель (smart pointer)** — класс, имитирующий интерфейс обычного указателя и добавляющий к нему некую новую функциональность, | ||
+ | |||
+ | Иначе говоря, | ||
+ | |||
+ | В классе также присутствует деструктор для настоящего объекта, | ||
+ | |||
+ | Например, | ||
+ | |||
+ | При наличии smart pointer, такого не произойдёт, | ||
+ | |||
+ | < | ||
+ | #include < | ||
+ | using namespace std; | ||
+ | class Temp | ||
+ | { | ||
+ | int TEMP; | ||
+ | public: | ||
+ | // | ||
+ | Temp(){TEMP=25; | ||
+ | // | ||
+ | void TempFunction(){ | ||
+ | cout<<" | ||
+ | } | ||
+ | // | ||
+ | void TempSet(int T){ | ||
+ | TEMP=T; | ||
+ | } | ||
+ | }; | ||
+ | // Класс, реализующий умный указатель | ||
+ | class SmartPointer | ||
+ | { | ||
+ | // Инкапсулированный указатель | ||
+ | Temp*ptr; | ||
+ | // | ||
+ | int count_copy; | ||
+ | |||
+ | public: | ||
+ | // | ||
+ | SmartPointer (Temp*p=NULL){ | ||
+ | // | ||
+ | count_copy=0; | ||
+ | ptr=p; | ||
+ | } | ||
+ | // конструктор копирования | ||
+ | SmartPointer (const SmartPointer& | ||
+ | // | ||
+ | ptr=obj.ptr; | ||
+ | count_copy++; | ||
+ | } | ||
+ | // | ||
+ | SmartPointer operator=(const SmartPointer& | ||
+ | // | ||
+ | ptr=obj.ptr; | ||
+ | ptr=obj.ptr; | ||
+ | count_copy++; | ||
+ | // | ||
+ | return *this; | ||
+ | } | ||
+ | // уничтожение объекта | ||
+ | ~SmartPointer(){ | ||
+ | // | ||
+ | if(ptr!=NULL&& | ||
+ | cout<<" | ||
+ | // | ||
+ | delete[]ptr; | ||
+ | } | ||
+ | //в противном случае(уничтожается копия) | ||
+ | else{ | ||
+ | // | ||
+ | count_copy--; | ||
+ | cout<<" | ||
+ | } | ||
+ | |||
+ | } | ||
+ | // | ||
+ | Temp* operator-> | ||
+ | return ptr; | ||
+ | } | ||
+ | |||
+ | }; | ||
+ | |||
+ | void main(){ | ||
+ | // | ||
+ | Temp*main_ptr=new Temp; | ||
+ | // | ||
+ | SmartPointer PTR(main_ptr); | ||
+ | // | ||
+ | PTR-> | ||
+ | PTR-> | ||
+ | // создаем копию (работа конструктора копирования) | ||
+ | SmartPointer PTR2=PTR; | ||
+ | } | ||
+ | |||
+ | Результат работы программы: | ||
+ | // работа с объектом через умный указатель | ||
+ | TEMP = 100 | ||
+ | // | ||
+ | ~Delete Copy | ||
+ | // | ||
+ | ~Delete Object | ||
+ | </ |
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга