13.8. Задание стартовых значений объектам
Можно объявлять статические объекты со стартовыми значениями полей. Для этого используется тот же синтаксис, что и для задания констант типа «запись». Для методов стартовых величин просто не существует, и они не задаются:
CONST
CObjPos : ObjPos = (Line: 1; Col: 1);
CObjString : ObgString = (Line: 1; Col:2; SubSt: 'ПЭВМ');
При таком способе инициализации полей уже нет необходимости в вызове конструктора для объектов, содержащих виртуальные методы. Инициализация обрабатывается компилятором автоматически.
Используя подобные введенным выше типизированные константы, можно инициализировать поля других объектов. Для этого достаточно ввести дополнительный метод, например Copy:
| TYPE
| Obj = OBJECT
| Поля данных;
| CONSTRUCTOR Copy(X : Obj);
| Другие конструкторы и(или) методы;
| END;
| CONSTRUCTOR Obj.Copy(X : Obj);
| BEGIN
| Self := X
| END;
| CONST
| CObj : Obj = (значения полей данных);
После этого можно вызывать этот конструктор, передавая ему в качестве параметра константу CObj типа Obj.