0988b24c

Определение объекта


Объект содержит структуру данных и список соответствующих объекту методов. Турбо Ассемблер используется для представления связанной с объектом структуры структурный тип данных, а для представления связанного с объектом списка методов - табличный тип данных.

Определить объекты вам поможет директива STRUC. В режиме Ideal используется следующий синтаксис:

STRUC имя [модификаторы] [имя_порождающего_объекта]

[METHOD [элемент_таблицы [,элемент_таблицы.]]] элементы_структуры ENDS [имя]

В режиме MASM используется следующий синтаксис:

имя STRUC [модификаторы] [имя_порождающего_объекта] [METHOD [элемент_таблицы [,элемент_таблицы.]]] элементы_структуры ENDS [имя]

где "имя" - это имя объекта. "Имя_порождающего_объекта" - это не- обязательное имя порождающего объекта. (Турбо Ассемблер явно под- держивает только одиночное наследование.) Структура данных порож- дающего объекта будет автоматически включаться в структуру данных нового объекта, а таблица методов порождающего объекта - в табли- цу методов нового объекта.

Каждое поле "элемент_таблицы" описывает имя метода и проце- дуры метода, связанного с объектом. Синтаксис этого поля такой же, как в определении таблицы.

Поле "элементы_структуры" описывает дополнительные элементы структуры, которые вы хотите определить в структуре данных объек- та. Они форматируются точно также, как в открытом определении структуры.

Необязательное ключевое слово "модификаторы" может представ- лять собой одно из следующих слов:

Разрешенные модификаторы Таблица 8.3 ---------------------T------------------------------------------¬ ¦ Ключевое слово ¦ Значение ¦ +--------------------+------------------------------------------+ ¦ GLOBAL ¦ Приводит к тому, что адрес таблицы вир- ¦ ¦ ¦ туальных методов (если она имеется) бу- ¦ ¦ ¦ дет объявлен общедоступным. ¦ ¦ ¦ ¦ ¦ NEAR ¦ Указатель виртуальной таблицы (если она ¦ ¦ ¦ имеется будет содержать смещение (16 или ¦ ¦ ¦ 32, бита в зависимости от выбора текущей ¦ ¦ ¦ модели по USE16 или USE32). ¦ ¦ ¦ ¦ ¦ FAR ¦ Указатель виртуальной таблицы (если она ¦ ¦ ¦ имеется будет содержать величины, задаю- ¦ ¦ ¦ щие сегмент и смещение (32 или 48 бит, в ¦ ¦ ¦ зависимости от выбора текущей модели по ¦ ¦ ¦ USE16 или USE32). ¦ L--------------------+-------------------------------------------

Если вы не задаете модификатор, размер указателя виртуальной таблицы (если он имеется) зависит от того, адресуются ли данные в текущей модели как NEAR, или как FAR.



Содержание раздела