Д. Вандевурд, Н.М. Джосаттис - Шаблоны C++. Справочник разработчика (2003) (1160769), страница 93
Текст из файла (страница 93)
Напри- мер, выражение чесгог<11нс<йпс» в С++ некорректно, но данная возможность позволяет компилятору трактовать его как чессог<11ис<1пг» АЬз1гас! с1ааа Поиск, зависящий от аргументов Апй!е Ьгаскег Ьаск Коррекция угловых скобок Апй!е Ьгаскегз Угловые скобки Символы < и >, используемые для выделения списка аргументов или параметров шаблонов Атег!сап Наг!оиа1 БюлИап! 1иг1нше (Американский национальный институт стандар- тов). Некоммерческая организация, координи- рующая усилия по выработке различных стан- дартов.
Подкомитет Пб руководит стаидартиза- АХЯ1 АХВ1 Данный глоссарий представляет собой набор наиболее важных технических терминов, встречающихся в втой книге. Наиболее полный на текущий момент толковый словарь используемых в С++ терминов представлен в (35). 522 Глоссарий цией С++, тесно сотрудничая с Международной организацией стандартов (130) Значение (в широком смысле), которое замещает параметр. Например, в вызове функции аЬв (-3) аргументом является значение -3. В некоторых сообществах программистов аргу- мент называется фактическим параметром, в то время как параметр называется формальным параметром См.
АШ. (Поиск, зависящий от аргументов) Аргумент Агйпщеп( Поиск, зависящий от аргументов Класс Агйпшепгдерепдед 1оо)гнр С1ааа Описание категории объектов. Класс определяет множество характеристик любого объекта. Сюда входят его данные (атрибуты, данные-члены) и его операции (методы, функции-члены). В С++ классы — это структуры с членами, которые мо- гут представлять собой функции и являются субъектами ограничения доступа Классы объяв- ляются с использованием ключевого слова с1авв или вггпсс Шаблон класса С!аьа гетр!аге Конструкция, представляющая семейство клас- сов. Определяет шаблон, по которому могут быть сгенерированы действительные классы пу- тем подстановки вместо параметров шаблона конкретных аргументов. Шаблоны классов ино- гда называют параметризованными классами, хотя данный термин имеет более общий характер Тип, объявленный в С++ с использованием клю- чевых слов с1авв, вгкпсг или ппйоп Тип класса С!аьа 1уре Сойесйоп с1аза Класс коллекции Выражение- константа Сопмапы ехргеааюп сопвг шегпЬег йшсг)оп Константная функция-член Контейнер Сопга(пег Класс, используемый для управления группой объектов.
В С++ классы коллекций называются также контейнерами Выражение, значение которого вычисляется компилятором во время компиляции. Иногда называется также истинной константой, для того чтобы избежать путаницы с константным выражением. Последнее включает выражения, которые являются константами, но не могут быть вычислены в процессе компиляции Функция-член, которая может быть вызвана для константного или временного обьекгов, поскольку обычно она не модифицирует объект * с Ьйв См. Са11есйоп с(алл (Класс коллекции) Книги и %еЬ-узлы 523 Согюиз1у гесогппй Модель необычгешр!аге рапегп ного рекуррентно- СКТР го шаблона Сведение ]зесау Объявление ])ес!агапов Оебвсбоп Вывод 1)ейп1йоп Определение ]уерепбепг паше Зависимое имя Сопнегвюп орегагог 0ерепг)епг Ьазе с1аяз Оператор преобразования типов Зависимый базовый класс Специальная функция-член, определяющая, ка- ким образом обьект может быть неявно (или яв- но) преобразован в объект другого типа.
Объяв- ляется в виде орегасог суре() Аббревиатура от с итшиз1у гесиптя гетр! аге раг- гегп (модель необычного рекуррентного шабло- на). Обозначает код, в котором класс Х порожда- ется из базового класса, для которого Х выступа- ет в роли аргумента шаблона Неявное преобразование массива или функции в указатель. Например, строковый литерал "Не11о" имееттип сЬаг сопок(б], ново многих контекстах С++ он неявно преобразуется в указатель сЬаг сопле* (который указывает на первый символ строки) Конструкция С++, которая вводит (возможно, повторно) имя в область видимости С++. См. Религий(оп (Определение) Процесс, который неявно определяет аргументы шаблона из контекста, в котором используется шаблон. Полностью термин звучит как гетр]аге агяитепг бег(испоп (вывод аргумента шаблона) Объявление, которое раскрывает детали обьявляе- мого объекта или в случае использования перемен- ных приводит к выделению памяти для объявляе- мого обьекта.
Для определений типов классов и функций — обьявление, включающее тело, заклю- ченное в фигурные скобки. Для объявлений внеш- них переменных — либо объявление без ключевого слова ехгегп, либо обьявление с инициавизатором Базовый класс, который зависит от параметра шаблона. Особое внимание должно уделяться доступу к членам зависимого базового класса. См. Тзва-р)шзе!оо)гир (Двухфазньш поиск) Имя, которое зависит от параметра шаблона.
На- пример, А<Т>:: х является зависимым именем, если А или Т представляют собой параметр шабло- на. Имя функции в вызове функции также является зависимым, если любой из аргументов вызова имеет тип, зависящий от параметра шаблона. Например, Е в вызове Е ( (Т*) О ) является зависимым именем, если Т вЂ” параметр шаблона. Однако само имя па- раметра шаблона не рассматривается как зависи- мое. См. Тяо-р)име (оаЫр (Двухфазный поиск) Глоссарий 524 Диграф Р!ягарЬ .С-файл РоыС 61е Ехрйс(! (па!алба- !)оп йгес!!че Директива явного инстанцирования Явная специали- зация Ехр!кй арес(а1!га- йоп Ехргеаа1оп юш- р!а!с Шаблон выраже- ния гг!епд паше 1п!ес!1оп РпП арес(а!шайоп Внесение друже- ственных имен Полная специали- зация Ешр[у Ьазе с1азз Оптимизация орйп!ха!)оп ЕВСО пустого базового класса Комбинация из двух последовательных симво- лов, эквивалентная некоторому отдельному сим- волу в программе С++.
Назначение диграфов— обеспечить возможность ввода кода на С++ на клавиатурах, на которых отсутствуют некоторые символы. Хотя диграфы используются относи- тельно редко, в тексте может встретиться диграф <:, который образуется, если после открываю- щей угловой скобки без пробела следует опера- тор разрешения области видимости:: . Файл, в котором находятся опредвлерия пере- менных и невстраиваемых функций.
Большая часть выполнимого (в отличие от декларативно- го) кода программы размещается в . С-файлах. Эти файлы называются так потому, что обычно имеют такие расширения, как . срр, . С, . с, . сс или . схх. См. также Оеаг(ег й!е (Заголовочный файл) и Тгаплйзг(оп ипи (Единица трансляции) Аббревиатура от етр!у Ьале с!ии орг!т(еаг(оп (оптимизация пустого базового класса). Оптими- зация, выполняемая большинством современных компиляторов, когда подобъект"пустого" базо- вого класса не занимает место в памяти Конструкция С++, единственная цель которой— создание точки инстанцирования Конструкция, которая объявляет или дает аль- тернативное определение шаблона с подстанов- кой конкретных параметров.
Исходный (обобщенный) шаблон называется первичным шаблоном. Если альтернативное определение продолжает зависеть от одного или нескольких параметров шаблона, такое определение называ- ется частичной специализацией, в противном случае зто полная специализация Шаблон класса, используемый для представле- ния части выражения. Шаблон сам по себе пред- ставляет операцию определенного вила. Пара- метры шаблона обозначают типы операндов, к которым применима операция Процесс, который делает имя функции, объяв- ленной в качестве дружественной, видимым См. Елрйсй лрвс(а!(гагйоп (Явная специализация) Книги и ЖеЬ-узлы 525 Объект-функция Шаблон функции Ропсгюп оЬ3есг Рппсйоп гешр! аю Функтор Рппсгог Неадег 61е Заголовочный файл 1пс!оде й1е Включаемый файл Косвенный вызов 1пд)гесг сай Вызов функции, в котором вызываемая функция не известна до момента реального вызова в про- цессе работы программы Конструкция, которая указывает, каким образом должен быть инициализирован именованный обьект.
Например, в вод:: сомр1ех<Е1оак> к1 1. О, к2 (О. О, 1. 0); инициализаторами являются 1. 0 и (0.0, 1.0) Инициализатор 1шйа!яег 1п1г)а11хег 11зг Список инициали- заторов Список выражений, разделенных запятымн, помещенный в фигурные скобки н используемый для инициализации объектов (нли массивов). В конструкторе может использоваться для определения значений для инициализации членов н базовых классов См. Рипсгог (Функтор) Конструкция, которая представляет семейство функций. Шаблон функции определяет модель, из которой генерируются действительные функ- ции путем подстановки вместо параметров шаб- лонов конкретных аргументов. Заметим, что шаблон функции является шаблоном, но не функцией.
Шаблоны функций иногда называют "параметризованными" функциями, хотя исход- ный термин является более общим Объект (именуемый также обьектом-функцией), который может быть вызван с использованием синтаксиса вызова функции. В С++ зто указате- ли или ссылки на функции и классы с операто- ром-членом () Файл, предназначенный быть частью единицы трансляции с помощью директивы йдпс1пде. Такие файлы часто содержат объявления пере- менных и функций, которые используются более чем в одной единице трансляции, а также опре- деления типов, встраиваемых функций, шабло- нов, констант и макросов. Такие файлы обычно имеютрасширения .Ьрр, .Ь, .Н, .ЬЬ или .Ьхх и иногда называются включаемыми файлами. См.
также 1зог-Ср(е (. С-файл) н Тпии1агюп ипй (Единица трансляции) См. НеааегЯ1е (Заголовочный файл) 526 Глоссарий 1п)ее!ад с1ааз паше Внесенное имя класса Экземпляр 1пз!апсе 1пзшпйа!!оп Инсганцирование 160 180 йегагог Итер втор ЬпйсаЫе епрйу Связываемый объект !иа!пе !еа!ве, 1-значение Имя класса в виде, видимом в пределах собст- венной области видимости. Для шаблонов клас- сов имя шаблона рассматривается в пределах области видимости шаблона как имя класса, если за этим именем не следует список аргументов Термин имлшсе (экземпляр) имеет в С++ два значе- ния. Значение, взятое из объектно-ориентированной терминологии, означает экземпляр класса, т.е.
объ ект, являющийся реализацией класса Например, в С++ лес!:: с оп с является экземпляром класса в Ьй:: ол Сгеапь Другое значение (используемое практически повсеместно в книге) этого термина— экземпляр шаблона, т.е. класс, функция или функ- ция-член, получающиеся в результате подстановки вмесю всех параметров шаблонов конкретных зна- чений. В этом смысле экземпвяр называется также специавизацией, хотя последний термин часто оши- бочно употребляется вместо явной специалшации Процесс создания обычного класса, функции нли функции-члена из шаблона путем подстановки вместо параметров шаблона конкретных значе- ний.