Найти тему

Умный указатель в C++

Статья подготовлена для студентов курса «Разработчик C++» в образовательном проекте OTUS.

Умный указатель в C++ (его ещё называют интеллектуальным) обеспечивает безопасность за счёт автоматического управления памятью. Такое решение позволит избежать ряда проблем при написании кода (отказов в выделении памяти, «утечек» памяти и пр.)

Умный указатель (Smart pointer) должен подсчитывать число ссылок на указанный объект. Поначалу может показаться, что это довольно сложная задача, особенно если вы не являетесь экспертом в C++. Давайте попробуем решить её, разделив на 2 части:

1) обрисуем общий подход и создадим псевдокод;

2) напишем подробный код.

Нам потребуется переменная — счётчик ссылок. Переменная будет увеличиваться, если мы будем добавлять новую ссылку на объект, и уменьшаться, если будем удалять ссылку.

Пример псевдокода:

-2

Для данного класса нам потребуются деструктор и конструктор, давайте опишем их:

-3

Есть и дополнительный способ создания ссылок — установить один SmartPointer в другой. Для этого потребуется переопределить оператор, но давайте сначала сделаем набросок кода:

-4

Что же, теперь осталось лишь написать итоговый код:

-5
-6

Вот и всё, ждём ваших комментариев!

Статья написана на основе одного из заданий книги «Карьера программиста. Как устроиться на работу в Google, Microsoft или другую ведущую IT-компанию», Лакман Г.

13 января пройдет второе занятие в новой группе курса «Разработчик C++».
Еще есть возможность попасть в группу! Но только сегодня и только до 00:00!