Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

ВИКЛИК КОНСТРУКТОРІВ ТА ДЕСТРУКТОРІВ _________________________________________

Читайте также:
  1. A b c d e f g h i j k l m n o p q r s t u v w x y z
  2. A GENERAL OUTLINE OF THE DISCUSSION OF A STORY
  3. a group of customers that the business has decided to aim its marketing efforts and ultimately its merchandise towards
  4. A limited version of federalism is a less miserable solution than the break-up of the euro
  5. A Little Chocolate a Day May Help Lower Blood Pressure
  6. A New Abstraction for Information Management
  7. A New Global Economy for a New Generation
  8. A perceptive article from an emerging small business management sphere.
  9. A VICTIM TO ONE HUNDRED AND SEVEN FATAL MALADIES
  10. A скорочення литкового м’язу жаби під дією гальванічного пінцету на препарат задніх лапок жаби

 

Конструктори і деструктори використовують ті самі узгодження про виклики, що й звичайні методи, за винятком того, що додатковий параметр розміром у слово, що називається параметром VMT, передається через стек безпосередньо перед параметром Self.

Для конструкторів параметр VMT містить зміщення таблиці віртуальних методів для запам’ятовування в полі таблиці віртуальних методів параметра Self, щоб його ініціалізувати.

Більше того, якщо конструктор викликається для розміщення динамічного об’єкту за допомогою розширеного синтаксису стандартної процедури New, через параметр Self передається вказівник Nil. Це змушує конструктор розміщувати новий динамічний об’єкт, адреса якого передається викликаючій програмі через DX:AX при поверненні з конструктора. Якщо конструктор не може розмістити об’єкт, то в DX:AX повертається порожній вказівник NIL.

Нарешті, якщо конструктор викликається з використанням власного ідентифікатора методу (ідентифікатора типу об’єкту, після якого йдуть крапка та ідентифікатор методу), то в параметрі таблиці віртуальних методів передається нульове значення. Це вказує конструктору, що йому не слід ініціалізувати поле Self таблиці віртуальних методів.

Для деструкторів нульове значення параметра таблиці віртуальних методів означає звичайний виклик, а ненульове вказує, що деструктор був викликаний з використанням розширеного синтаксису стандартної процедури Dispose. Це змушує деструктор видалити Self безпосередньо перед поверненням (розмір Self визначається з першого слова Self у VMT).

ПІДСУМОК

Динамічні методи є підкласом віртуальних методів і відрізняються від них тільки способом виклику на етапі виконання. Опис динамічного методу аналогічний опису віртуального методу, за винятком того, що він повинен включати в себе індекс динамічного методу, який вказується відразу після ключового слова VIRTUAL.

Якщо об’єкт чи якийсь з його предків містить віртуальні методи, для нього створюється таблиця віртуальних методів (VMT). Для об’єкта, що містить або успадковує динамічні методи, створюється таблиця динамічних методів (DMT)

Обробка виклику динамічного методу може вимагати значно більше часу, ніж виклик віртуального методу. Однак у тих випадках, коли самі дії, що виконуються динамічним методом, вимагають багато часу, додатковий простір, що зберігається таблицями динамічних методів може виявитися істотнішим.




Дата добавления: 2015-01-29; просмотров: 32 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав