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