Я почти закончил Accelerated C ++ от Koenig & Moo, и в главах 13 и 14 они изложили идею и реализацию нескольких классов Handle (простых, общих, с подсчетом ссылок).
Классы заключены в капсулунеобработанный указатель и абстрагирование выделения / освобождения динамических объектов от клиентского кода, чтобы избежать всех опасностей необработанных указателей, а также позволяет пользователю разыменовывать их для доступа к указанному объекту.По сути, это «более безопасный» способ взаимодействия с необработанными ресурсами памяти.
Являются ли классы, представленные в этих главах, по существу реализациями интеллектуальных указателей?Умные указатели все еще довольно новы для меня, но насколько я понимаю, эти классы Handle выполняют одну и ту же функцию.
- Есть ли различие между ними или это просто другое название для той же вещи?
- Если предположить, что они эквивалентны по функциям, на практике такой класс, как этот, будет написан с нуля, а не с использованием уже созданного решения с использованием интеллектуальных указателей?
РЕДАКТИРОВАТЬ
Я должен добавить, что классы, которые они разрабатывают в этих главах, являются шаблонными классами, поэтому они не привязаны к конкретному ресурсу, как, например, они не проектируют конкретный класс FileHandle.
Код впервый фрагмент кода здесь , 7.1, в значительной степени соответствует тому, что они имеют в главах, на которые я ссылаюсь.