Для создания такой переменной сначала необходимо описать тип для нее; такой тип называется ссылочным. Ниже приведен пример описания ссылочного типа, позволяющего переменным типа Node_Access получить доступ к объектам типа Node (ссылаться на них):
type Node_Access is access Node;
Далее приведена BNF создания ссылочного типа для объекта:
описание_ссылочного_типа_для_объекта ::= "type" новое_имя_типа "is" "access" ["all"] имя_типа ";"
Переменные ссылочного типа могут ссылаться на объект либо иметь значение null. Можно создать ссылочную переменную со значением null, используя ключевое слово "null" в качестве присваиваемого значения, а также с помощью операций "=" или "/=" можно проверить, имеет ли переменная значение "null". Вообще говоря, "null" можно считать значением, которое может принимать переменная любого ссылочного типа.
Возможность "указывать" на другие значения может быть полезной и эффективной, но также и опасной. С указателями легко сделать что-то не так и получить неожиданные результаты. В Аda сделана попытка уменьшить ущерб, который можно причинить, стремясь к эффективности. В Аda это делается с помощью следующих правил:
При оптимизации Ada-компилятор отбросит все эти проверки и инициализации, если будет определено, что в них нет необходимости. Также можно отключить их в конкретной подпрограмме, если известно, что она полностью корректна.
Теперь, когда мы знаем, как описывать ссылочные типы, можно перейти к рассмотрению их использования.
Что из нижеследующего является объявлением ссылочного типа с именем Thing_Access?
Перейти к предыдущему разделу | Перейти к следующему разделу | Вернуться к содержанию Урока 12 |
---|
David A. Wheeler (dwheeler@ida.org)
Исходная копия этого документа находится по адресу
"http://www.adahome.com/Tutorials/Lovelace/s12s1.htm".
Исходная копия перевода размещена на сайте http://www.ada-ru.org
Перевод: Юрий Королев
Общая редакция перевода: Г.Ю. Сисюк