Ада-95. Компилятор GNAT


Элементарные сведения: описание, создание, инициализация


Предположим, что у нас есть следующие описания:

type Person_Name is new String (1 .. 4); type Person_Age is Integer range 1 .. 150;

type Person is

record

Name : Person_Name; Age : Person_Age; end record;

Предположим также, что нам необходимо разместить экземпляр объекта типа Person

в области динамической памяти.

Для этого нам надо описать ссылочный тип, значения которого будут ссылаться на значения (объекты) типа Person и переменную этого ссылочного типа (заметим, что все ссылочные типы Ады описываются с помощью использования зарезервированного слова access):

type Person_Ptr is access Person; -- описание ссылочного типа Someone : Person_Ptr; -- переменная (объект) ссылочного типа

Для индикации того, что переменная ссылочного типа (указатель) не указывает ни на один объект, Ада использует специальное значение null

(это подобно тому, что используется в языке Паскаль).

По умолчанию, объект ссылочного типа всегда инициализируется в null.

Таким образом, после приведенных выше описаний, переменная Someone

имеет значение null.

Теперь, чтобы создать объект типа Person в области динамической памяти и присвоить соответствующее ссылочное значение переменной Someone

необходимо выполнить следующее:

Someone := new Person;

Примечательно, что созданный таким образом в области динамической памяти объект типа Person - никак не инициализирован.

Таким образом производится простое распределение пространства, которое необходимо для размещения объекта типа Person, в области динамической памяти.

После создания объекта в области динамической памяти, мы можем проинициализировать индивидуальные поля записи типа Person, на которую ссылается переменная Someone, следующим образом:

Someone.Name := "Fred"; Someone.Age := 33;

Следует заметить, что при таком обращении к объекту в динамической области памяти производится неявная расшифровка ссылки, а внешний вид кода подобен тому, что используется при обращении к статическому объекту.

Для того, чтобы обратиться ко всему содержимому объекта, на который указывает значение ссылочного объекта (указателя), Ада использует зарезервированное слово all.




- Начало -  - Назад -  - Вперед -



Книжный магазин