TURBO PASCAL |
Новости
|
Размещение и инициализация с помощью процедуры NewBorland Pascal расширяет синтаксис процедуры New, что явля- ется более компактным и более удобным средством выделения прост- ранства для объекта в динамически распределяемой области памяти и инициализации объекта с помощью только одной операции. Теперь процедура New может вызываться с двумя параметрами: имя указателя используется в качестве первого параметра, а вызов конструктора - в качестве второго параметра: New(P, Init('Sara Adams', 'Account manager', 2400)); Если для процедуры New используется расширенный синтаксис, то конструктор Init действительно выполняет динамическое размеще- ние, используя специальный код входа, сгенерированного как часть компиляции конструктора. Имя реализации не может предшествовать Init, т.к. в то время, когда процедура New вызвана, реализация, инициализируемая с помощью Init, еще не существует. Компилятор идентифицирует правильный вызываемый метод Init посредством типа указателя, пересылаемого в качестве первого параметра. Процедура New также была расширена для возможности использо- вания ее как функции, которая возвращает значение указателя. По- сылаемый New параметр является типом указателя на объект, а не самой переменной-указателем: tyрe PSalaried = ^TSalaried; var P: PSalaried; P := New(PSalaried); Обратите внимание, что в данной версии функциональная форма расширения процедуры New применима ко всем типам данных, а не только к типам объектов. Функциональная форма New, как и процедурная форма, также мо- жет воспринимать конструктор объектного типа в качестве второго параметра: P := New(PSalaried, Init('Sara Adams', 'Account manager', 2400)); В Borland Pascal осуществлено также параллельное расширение процедуры Disрose, это подробно обсуждается в следующем разделе. Примечание: Новая стандартная процедура Fail поможет вам в конструкторах выполнить восстановление при ошибке (см. Главу 9 в "Руководстве по языку"). |
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |