6.5.1. Объекты

Вверх  Предыдущий  Следующий

В действительности невидимое объявление конструктора объекта следующее:

constructor init(_vmt : pointer; _self : pointer …);

Где _vmt – это указатель на таблицу виртуальных методов для этого объекта. Это значение равно nil, если конструктор из экземпляра объекта (такого как вызов наследуемого конструктора).

_self – это либо nil, если экземпляр должен быть создан динамически (объект объявлен как указатель), или адрес экземпляра объекта, если объект объявлен как обычный объект (сохранён в области данных) или если экземпляр объекта уже создан.

Созданный экземпляр (если он создан через new), возвращается в аккумулятор.

Деструктор объявляется следующим образом:

destructor done(_vmt : pointer; _self : pointer …);

Где _vmt – это указатель на таблицу виртуальных методов этого объекта. Это значение равно nil, если деструктор вызывается из экземпляра объекта (такого как вызов наследуемого конструктора), или если экземпляр объекта – это переменная, а не указатель.

_self – это адрес экземпляра объекта.