Статья подготовлена для студентов курса «Разработчик C++» в образовательном проекте OTUS.
Умный указатель в C++ (его ещё называют интеллектуальным) обеспечивает безопасность за счёт автоматического управления памятью. Такое решение позволит избежать ряда проблем при написании кода (отказов в выделении памяти, «утечек» памяти и пр.)
Умный указатель (Smart pointer) должен подсчитывать число ссылок на указанный объект. Поначалу может показаться, что это довольно сложная задача, особенно если вы не являетесь экспертом в C++. Давайте попробуем решить её, разделив на 2 части:
1) обрисуем общий подход и создадим псевдокод;
2) напишем подробный код.
Нам потребуется переменная — счётчик ссылок. Переменная будет увеличиваться, если мы будем добавлять новую ссылку на объект, и уменьшаться, если будем удалять ссылку.
Пример псевдокода:
Для данного класса нам потребуются деструктор и конструктор, давайте опишем их:
Есть и дополнительный способ создания ссылок — установить один SmartPointer в другой. Для этого потребуется переопределить оператор, но давайте сначала сделаем набросок кода:
Что же, теперь осталось лишь написать итоговый код:
Вот и всё, ждём ваших комментариев!
Статья написана на основе одного из заданий книги «Карьера программиста. Как устроиться на работу в Google, Microsoft или другую ведущую IT-компанию», Лакман Г.
13 января пройдет второе занятие в новой группе курса «Разработчик C++».
Еще есть возможность попасть в группу! Но только сегодня и только до 00:00!