Spec-Zone.ru › Ada 95
Справочник по Ada 95

3.3 Объекты и именованные числа

Объекты создаются во время выполнения и содержат значение заданного типа. Объект может быть создан и инициализирован в рамках обработки объявления, вычисления аллокатора, агрегата или вызова_функции, или при передаче параметра по значению. Перед освобождением памяти объекта, он завершает свою работу, если необходимо (см. 7.6.1).

Статические семантические правила

Все перечисленное ниже являются объектами:
  • сущность, объявленная с помощью объявления_объекта;
  • формальный параметр подпрограммы, входа или обобщенной подпрограммы;
  • обобщенный формальный объект;
  • параметр цикла;
  • параметр выбора обработчика исключения;
  • индекс входа блока_входа;
  • результат приведения к значению доступа к объекту (см. 4.1);
  • результат вычисления вызова_функции (или эквивалентного вызова оператора — см. 6.6);
  • результат вычисления агрегата;
  • компонент, срез или преобразование вида другого объекта.
Объект является либо постоянным объектом, либо переменным объектом. Значение постоянного объекта не может быть изменено между его инициализацией и завершением, в то время как значение переменного объекта может быть изменено. Аналогично, вид объекта является либо постоянным, либо переменным. Все виды постоянного объекта являются постоянными. Постоянный вид переменного объекта не может использоваться для изменения значения переменной. Термины постоянный и переменный сами по себе относятся к постоянным и переменным видам объектов.
Значение объекта считывается, когда значение любой части объекта вычисляется, или когда вычисляется значение содержащего объекта. Значение переменной обновляется, когда выполняется присваивание любой части переменной, или когда выполняется присваивание содержащему объекту.
То, является ли вид объекта постоянным или переменным, определяется определением вида. Следующие (и только они) представляют собой константы:
  • объект, объявленный с помощью объявления_объекта с ключевым словом constant;
  • формальный параметр или обобщенный формальный объект режима in;
  • дискриминант;
  • параметр цикла, параметр выбора или индекс входа;
  • дескриптор доступа к константному значению;
  • результат вычисления вызова_функции или агрегата;
  • атрибут selected_component, indexed_component, slice или преобразование вида константы.
В месте определения вида объекта ассоциируется номинальный подтип с видом. Фактический подтип объекта (то есть его подтип) может быть более ограничительным, чем номинальный подтип вида; он всегда является таковым, если номинальный подтип является неопределенным подтипом. Подтип является неопределенным, если это не ограниченный подтип массива, или если он имеет неизвестные дискриминанты или неограниченные дискриминанты без значений по умолчанию (см. 3.7); в противном случае подтип является определенным подтипом (все элементарные подтипы являются определенными подтипами). Подтип класса определяется как имеющий неизвестные дискриминанты и поэтому является неопределенным подтипом. Неопределенный подтип сам по себе не предоставляет достаточной информации для создания объекта; необходимы дополнительное ограничение ограничение или явная инициализация выражение (см. 3.3.1). Компонент не может иметь неопределенный номинальный подтип.
Именованное число предоставляет имя для числового значения, известного на этапе компиляции. Оно объявляется с помощью объявления_числа.
ПРИМЕЧАНИЯ
5 Константа не может быть объектом назначения операции присваивания, а также не может быть передана как параметр in in out или out между ее инициализацией и завершением, если таковые имеются.
6 Номинальный и фактический подтипы элементарного объекта всегда одинаковы. Для дискриминированного или массивового объекта, если номинальный подтип ограничен, то ограничен и фактический подтип.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API