Динамические объекты
Все приведенные до сих пор объекты имели статические реали- зации типов объектов, которым в объявлении var присваивались име- на и которые размещались в сегменте данных или в стеке.
var ASalaried: TSalaried;
Примечание: Использование здесь слова "статический" не имеет отношения к статическим методам.
Объекты могут размещаться в динамической памяти и ими можно манипулировать с помощью указателей, как и с тесно связанными с ними типами записей, что всегда имело место в Паскале. Турбо Пас- каль включает несколько мощных расширений для выполнения динами- ческого размещения и удаления объектов более легкими и более эф- фективными способами.
Объекты могут размещаться, как области памяти, на которые ссылается указатель, с помощью процедуры New:
var CurrentPay: Real; P: ^TSalaried;
New(P);
Как и для типов записей, процедура New выделяет в динамичес- кой памяти пространство, достаточное для размещения реализации указателя базового типа и возвращает адрес этого пространства в указателе.
Если динамический объект содержит виртуальные методы, то он должен инициализироваться с помощью вызова конструктора перед тем, как будет вызван любой из его методов:
P^.Init('Sara Adams', 'Account manager', 2400);
Затем вызовы методов могут происходить в обычном порядке, с использованием имени указателя и ссылочного символа вместо имени реализации, которое использовалось бы при обращении к статически размещенному объекту:
CurrentPay := P^.GetPayAmount;