Читаем C++ полностью

Слово const можно добавлять к любому допустимому спецфикатору_типа. В остальных случаях в описании может быть дано не более одного спецификатора_типа. Объект типа const не яляется lvalue. Если в описании опущен спецификатор типа, он принимается int.

простое_имя_типа: char short int long unsigned float double const void

Слова long, short и unsigned можно рассматривать как прилагательные. Они могут применяться к типу int; unsigned может также применяться к типам char, short и long.

Спецификаторы класса и перечисления обсуждаются в #8.5 и #8.10 соответственно.

сложный_спецификатор_типа: ключ typedef-имя ключ идентификатор

ключ: class struct union enum

Сложный спецификатор типа можно использовать для ссылки на имя класса или перечисления там, где имя может быть скрыто локальным именем. Например:

class x (* ... *);

void f(int x) (* class x a; // ... *)

Если имя класса или перечисления ранее описано не было, сложный_спецификатор_типа работает как описание_имени, см. #8.8.

<p>8.3 Описатели</p>

Список_описателей, появляющийся в описании, есть раздленная запятыми последовательность описателей, каждый из кторых может иметь инициализатор.

список_описателей: иниц_описатель иниц_описатель , список_описателей

иниц_описатель:

описатель инициализатор opt

Инициализаторы обсуждаются в #8.6. Спецификатор в описнии указывает тип и класс памяти объектов, к которым относятся описатели. Описатели имеют синтаксис:

описатель: оп_имя ( описатель ) * const opt описатель amp; const opt описатель описатель ( список_описаний_параметров ) описатель [ константное_выражение opt ]

оп-имя: простое_оп_имя typedef-имя :: простое_оп_имя

простое_оп_имя: идентификатор typedef-имя ~ typedef-имя имя_функции_операции имя_функции_преобразования

Группировка та же, что и в выражениях.

<p>8.4 Смысл описателей</p>

Каждый описатель считается утверждением того, что если в выражении возникает конструкция, имеющаяя ту же форму, что и описатель, то она дает объект указанного типа и класса памти. Каждый описатель содержит ровно одно оп_имя; оно опредляет описываемый идентификатор. За исключением описаний некторых специальных функций (см. #8.5.2) , оп_имя будет простым идентификатором.

Если в качестве описателя возникает ничем не снабженный идентификатор, то он имеет тип, указанный спецификатором, возглавляющим описание.

Описатель в скобках эквивалентен описателю без скобок, но связку сложных описателей скобки могут изменять.

Теперь представим себе описание

T D1

где T – спецификатор типа (как int и т.д.), а D1 – опсатель. Допустим, что это описание заставляет идентификатор иметь тип «... T», где «...» пусто, если идентификатор D1 есть просто обычый идентификатор (так что тип x в «int x» есть просто int). Тогда, если D1 имеет вид

*D

то тип содержащегося идентификатора есть «...указатель на T.»

Если D1 имеет вид

* const D

то тип содержащегося идентификатора есть «... констанный указатель на T», то есть, того же типа, что и *D, но не lvalue.

Если D1 имеет вид

amp;D

или

amp; const D

то тип содержащегося идентификатора есть «... ссылка на T.» Поскольку ссылка по определению не может быть lvalue, ипользование const излишне. Невозможно иметь ссылку на void (void amp;).

Если D1 имеет вид

D (список_описаний_параметров)

то содержащийся идентификатор имеет тип «... функция, принимающая параметр типа список_описаний_параметров и возращающая T.»

список_описаний_параметров: список_описаний_парам opt ... opt

список_описаний_парам: список_описаний_парам , описание_параметра описание_параметра

описание_параметра: спецификаторы_описания описатель спецификаторы_описания описатель = выражение спецификаторы_описания абстракт_описатель спецификаторы_описания абстракт_описатель = выражение

Если список_описаний_параметров заканчивается многоточем, то о числе параметров известно лишь, что оно равно или больше числа специфицированных типов параметров; если он пуст, то функция не получает ни одного параметра. Все описния для функции должны согласовываться и в типе возвращаемого значения, а также в числе и типе параметров.

Список_описаний_параметров используется для проверки и преобразования фактических параметров и для контроля присвавания указателю на функцию. Если в описании параметра указано выражение, то это выражение используется как параметр по умолчанию. Параметры по умолчанию будут использоваться в взовах, где опущены стоящие в хвосте параметры. Параметр по умолчанию не может переопределяться более поздними описаними. Однако, описание может добавлять параметры по умолчанию, не заданные в предыдущих описаниях.

По желанию можно задать идентификатор как имя параметра. Если он присутствует в описании функции, его использовать нельзя, поскольку он сразу выходит из области видимости. Если он присутствует в определении функции (#10), то он именует фармальный параметр.

Если D1 имеет вид

D[ константное_выражение ]

или

D[]

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных