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