Розширене використання оператора New
Pascal використовує розширений синтаксис процедури New, який дозволяє одночасно виділяти пам’ять для об’єкту в динамічній області та ініціалізувати сам об’єкт за допомогою виклику його конструктора. Тепер процедура New може викликатися з двома параметрами: ім’я вказівника використовується в якості першого параметра, а ім’я конструктора – в якості другого параметра.
New(S, Init('Рanкo','10.10.1995',550);
При використанні розширеного синтаксису процедури New конструктор Init виконує динамічне розміщення об’єкту, використовуючи спеціальний згенерований код, що викликається оператором CONSTRUCTOR і виконується до основного коду конструктора. Ім’я екземпляра об’єкту не може використовуватися в якості першого параметра процедури, оскільки під час виклику процедури New екземпляр, що ініціалізується за допомогою Init, ще не існує. Компілятор визначає правильність виклику конструктора, перевіряючи тип вказівника, що передається в якості першого параметра.
Процедура New також може використовуватися в якості функції, що повертає значення вказівника. Параметр, який передається New, цього разу повинен бути типом вказівника на об’єкт, а не самим об’єктом.
TYPE
SStudent:=^TStudent;
VAR
S:SStudent;
…
S:=New(SStudent);
Використання процедури New як функції може застосовуватися до всіх типів даних, а не тільки до об’єктів.
В якості другого параметра процедура New може містити конструктор об’єктного типу
S:=New(SStudent, Init('Рanкo','10.10.1995',550);
Дата добавления: 2015-08-26; просмотров: 515;