R.14.5 Описания и определения
R.14.5 Описания и определения
Для каждого имени шаблона типа в программе должно существовать только одно определение. Описаний может быть несколько. Определение используется для создания специальных шаблонных классов и шаблонных функций, которые будут соответствовать шаблону типа.
Конструкция имя-шаблонного-класса вводит описание шаблонного класса.
Вызов шаблонной функции или взятие ее адреса вводит описание шаблонной функции. Для вызова или взятия адреса шаблонной функции в языке существует особое соглашение: имя шаблонной функции используется точно так же как имя обычной функции. Описание функции с таким же именем, как у шаблонной функции, и с сопоставимыми типами параметров, вводит описание специальной шаблонной функции.
Если для выполнения некоторых операций требуется определение специального шаблонного класса или специальной шаблонной функции, и если такого определения в программе нет, то оно будет создано.
Определение обычной (нешаблонной) функции с типом, который точно сопоставляется с типом из описания шаблонной функции, считается определением специальной шаблонной функции. Рассмотрим пример:
template‹class T› void sort(vector‹T›& v) {/*… */}
void sort(vector‹char*›& v) {/*… */}
Здесь определение функции sort будет использоваться для той функции из семейства sort, которая сопоставляется при вызове с типом параметра vector‹char*›. Для других типов vector будет создаваться соответствующее им определение функции по шаблону типа.
Можно определить класс, который задает шаблонный класс, например:
template‹class T› class stream {/*… */};
class stream‹char› {/*… */};
Здесь описание класса будет использоваться в качестве определения потока символов (stream‹char›). Другие потоки будут управляться с помощью шаблонных функций, создаваемых по шаблону типа для функций.
Пока не появится описание шаблона типа для класса, никакие операции, которым требуется определенный класс, не могут быть произведены над шаблонным классом. После этого специальный шаблонный класс будет считаться определенным, причем сразу же перед первым глобальным описанием, использующим его имя.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
11.5. Файлы описания зон
11.5. Файлы описания зон Теперь посмотрим, что у нас находится в директории /var/named. Судя по файлу конфигурации /etc/named.conf, у нас здесь должно быть три файла:? named.ca — хранит ссылки на корневые серверы. Этот файл просто забирается с сервера internic.net, поэтому его редактировать не
R.3.1 Описания и определения
R.3.1 Описания и определения Описание ($$r.7) делает известным в программе одно или несколько имен. Описание считается определением, если только оно не описывает функцию без задания ее тела (§R.8.3), не содержит описателя extern (§R.7.11), не имеет части инициализации или тела функции,
R.7 Описания
R.7 Описания Описания используются для интерпретации каждого из идентификаторов; необязательно, чтобы они сопровождались выделением памяти, сопоставляемой с идентификатором. Описания имеют видописания: спецификации-описания opt список-описателей
R.7.3 Описания asm
R.7.3 Описания asm Описание asm имеет вид:описание-asm: asm ( строка-литерал );Назначение описания asm определяется реализацией. Обычно оно используется для передачи информации от транслятора к
R.17.3 Описания
R.17.3 Описания описания: спецификации-описания opt список-описателей
R.17.5 Описания класса
R.17.5 Описания класса спецификация-класса: заголовок-класса { список-членов opt }заголовок-класса: служебное-слово-класса идентификатор opt спец-базовых opt служебное-слово-класса имя-класса спец-базовых optслужебное-слово-класса: class struct unionсписок-членов: описание-члена
ПРИЧУДЛИВЫЕ ОПИСАНИЯ
ПРИЧУДЛИВЫЕ ОПИСАНИЯ Язык Си позволяет вам создавать сложные формы данных. Обычно мы придерживаемся более простых форм, но считаем споим долгом указать ни потенциальные возможности языка. При создании описания мы используем имя (или "идентификатор"), которое можно
Структурные описания
Структурные описания Метаданные- физические описания таблиц, их столбцов и атрибутов, так же как и описания всех других объектов - сами хранятся в обычных таблицах Firebird внутри базы данных. Сервер Firebird изменяет данные в этих таблицах, когда объекты базы данных создаются,
1.4.9 Описания
1.4.9 Описания Описание – это оператор, вводящий имя в программе. Оно может также инициализировать объект с этим именем. Выполнение описания означает, что когда поток управления доходит до описания, вычисляется инициализирующее выражение (инициализатор) и производится
2.1 Описания
2.1 Описания Прежде чем имя (идентификатор) может быть использовано в С++ программе, он должно быть описано. Это значит, что надо задать его тип, чтобы сообщить компилятору, к какого вида сущностям относится имя. Вот несколько примеров, иллюстрирующих разнообразие
4.6.1 Описания Функций
4.6.1 Описания Функций Описание функции задает имя функции, тип возвращаемого функцией значения (если таковое есть) и число и типы парамеров, которые должны быть в вызове функции. Например:extern double sqrt(double); extern elem* next_elem(); extern char* strcpy(char* to, const char* from); extern void exit(int);Семантика
8. Описания
8. Описания Описания используются для определения интерпретации, дваемой каждому идентификатору. Они не обязательно резервируют память, связанную с идентификатором. Описания имеют вид:описание: спецификаторы_описания opt список_описателей opt ; описание_имени
14.2 Описания
14.2 Описания описание: спецификаторы_описания opt список_описателей opt ; описание_имени asm-описаниеописание_имени: сост идентификатор ; enum идентификатор ;сост:class struct unionasm-описание: asm ( строка ) ;спецификаторы_описания: спецификатор_описания спецификаторы_описания