Что такое обобщенные указатели и почему они полезны
Что такое обобщенные указатели и почему они полезны
Представим себе некий объект, который имеет перегруженную операцию operator->(). Мы можем его представить себе как некий обобщенный указатель, который не является указателем в полном смысле этого слова, но «прикидывается» им. Мы можем использовать его для доступа к полям и методам некоего объекта. Можно придумать много разных применений для обобщенных указателей: реализация различных вариантов умных указателей, осуществляющих некоторую форму сборки мусора или просто ведущих статистику обращений к объектам, можно использовать обобщенные указатели для реализации паттерна «Proxy», когда мы вместо объекта используем обобщенный указатель на него, а сам объект прячется где-либо из соображений инкапсуляции, можем использовать их для реализации стратегий ленивых и сверхэнергичных вычислений и для многого другого. Видно, что обобщенные указатели – весьма полезная штука.
СОВЕТ Для того, чтобы понять всю мощь и красоту обобщенных указателей весьма полезно почитать такие книги, как «Эффективное использование C++» и «Наиболее эффективное использование C++» Скотта Мейерса, «C++: библиотека программиста» Джеффа Элджера, а также более общую книгу «Приемы объектно-ориентированного программирования. Паттерны проектирования» Эриха Гаммы, Ричарда Хелма, Ральфа Джонсона и Джона Влиссидеса.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Что такое «за стеклом» и почему все хотят туда попасть
Что такое «за стеклом» и почему все хотят туда попасть Коммуникативный феномен социальных сетей По состоянию на начало 2010 г., количество пользователей Твиттера превысило цифру 105 млн. Российских твиттерян на тот же период насчитывалось всего около 200 000, но прирост
Обобщенные алгоритмы
Обобщенные алгоритмы В заголовочном файле <QtAlgorithms> объявляются глобальные шаблонные функции, которые реализуют основные алгоритмы для контейнеров. Большинство этих функций работают с итераторами в стиле STL.Заголовочный файл STL <algorithm> содержит более полный набор
6.6.3. Обобщенные алгоритмы
6.6.3. Обобщенные алгоритмы Операции, описанные в предыдущих разделах, составляют набор, поддерживаемый непосредственно контейнерами vector и deque. Согласитесь, что это весьма небогатый интерфейс и ему явно не хватает базовых операций find(), sort(), merge() и т.д. Планировалось
12. Обобщенные алгоритмы
12. Обобщенные алгоритмы В нашу реализацию класса Array (см. главу 2) мы включили функции-члены для поддержки операций min(), max() и sort(). Однако в стандартном классе vector эти, на первый взгляд фундаментальные, операции отсутствуют. Для нахождения минимального или максимального
12.5. Обобщенные алгоритмы
12.5. Обобщенные алгоритмы Первые два аргумента любого обобщенного алгоритма (разумеется, есть исключения, которые только подтверждают правило) – это пара итераторов, обычно называемых first и last, ограничивающих диапазон элементов внутри контейнера или встроенного массива,
21. Обобщенные алгоритмы в алфавитном порядке
21. Обобщенные алгоритмы в алфавитном порядке В этом приложении мы рассмотрим все алгоритмы. Мы решили расположить их в алфавитном порядке (за небольшими исключениями), чтобы проще было найти нужный. Каждый алгоритм представлен в следующем виде: сначала описывается
7.3.5 Обобщенные Классы
7.3.5 Обобщенные Классы Очевидно, можно было бы определить списки других типов (classdef*, int, char* и т.д.) точно так же, как был опредлен класс nlist: простым выводом из класса slist. Процесс оределения таких новых типов утомителен (и потому чреват ошиками), но с помощью макросов его можно
Обобщенные типы
Обобщенные типы Обобщенные типы: обзор Обобщенным типом (generic) называется шаблон для создания класса, записи или интерфейса, параметризованный одним или несколькими типами. Класс (запись, интерфейс) образуется из шаблона класса (записи, интерфейса) подстановкой
Обобщенные типы: обзор
Обобщенные типы: обзор Обобщенным типом (generic) называется шаблон для создания класса, записи или интерфейса, параметризованный одним или несколькими типами. Класс (запись, интерфейс) образуется из шаблона класса (записи, интерфейса) подстановкой конкретных типов в
Обобщенные подпрограммы в качестве параметров
Обобщенные подпрограммы в качестве параметров Обобщенная подпрограмма может выступать в качестве формального параметра другой обобщенной подпрограммы.Например, в классе System.Array имеется несколько статических обобщенных методов с обобщенными подпрограммами в качестве
Полцарства за метаданные: почему спецслужбы собирают только метаинформацию — и что это вообще такое? Евгений Золотов
Полцарства за метаданные: почему спецслужбы собирают только метаинформацию — и что это вообще такое? Евгений Золотов Опубликовано 08 июля 2013 Когда бывший директор АНБ и ЦРУ Майкл Гайден советовал европейцам поинтересоваться, чем занимаются их
Ионизаторы и озонаторы: насколько они полезны
Ионизаторы и озонаторы: насколько они полезны Человеческая деятельность, развитие промышленного производства, рост выброса вредных веществ негативно влияют на окружающую среду, изменяя структуру воздуха и приводя к уменьшению количества в нем легких ионов, особенно