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.