Borland Pascal. Руководство пользователя

       

Динамические объекты


Все приведенные до сих пор объекты имели статические реали- зации типов объектов, которым в объявлении var присваивались име- на и которые размещались в сегменте данных или в стеке.

var ASalaried: TSalaried;

Примечание: Использование здесь слова "статический" не имеет отношения к статическим методам.

Объекты могут размещаться в динамической памяти и ими можно манипулировать с помощью указателей, как и с тесно связанными с ними типами записей, что всегда имело место в Паскале. Турбо Пас- каль включает несколько мощных расширений для выполнения динами- ческого размещения и удаления объектов более легкими и более эф- фективными способами.

Объекты могут размещаться, как области памяти, на которые ссылается указатель, с помощью процедуры New:

var CurrentPay: Real; P: ^TSalaried;

New(P);

Как и для типов записей, процедура New выделяет в динамичес- кой памяти пространство, достаточное для размещения реализации указателя базового типа и возвращает адрес этого пространства в указателе.

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

P^.Init('Sara Adams', 'Account manager', 2400);

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

CurrentPay := P^.GetPayAmount;



Содержание раздела