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



Общие сведения - часть 2


Чтобы более наглядно продемонстрировать идею использования контролируемых типов, рассмотрим следующее:

declare

A: T; -- создание объекта A и вызов Initialize(A) B: T; -- создание объекта B и вызов Initialize(B) begin

. . . A := B; -- вызов Finalize(A), копирование значения B в A и вызов Adjust(A) . . . end; -- вызов Finalize(A) и Finalize(B)

В данном случае, предполагается, что тип T является производным от типа Controlled. Отличие использования типов, производных от типа Limited_Controlled, заключается только в отсутствии операции Adjust.

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

. . .

C: T := значение_инициализации; -- вызов Initialize(C) не выполняется!!!

. . .

то автоматический вызов операции Initialize выполняться не будет.




Содержание  Назад  Вперед