ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Расширенная совместимость типов.Следующий вопрос, связанный с использованием объектов, заключается в совместимости объектных типов. Следует заметить, что строгие правила языка Паскаль, касающиеся дисциплины типов, несколько ослаблены в применении к объектам. Это — следствие наследования. Полезно знать следующее. Наследник сохраняет свойства совместимости с другими объектами своего родителя. В правой части оператора присваивания вместо типов родителя можно использовать типы наследника, но не наоборот. Дело в том, что наследник может быть более сложным объектом, содержащим дополнительные поля и методы, поэтому присваивание значения экземпляра объекта-родителя экземпляру объекта-наследника может оставить некоторые поля неопределенными и, следовательно, представляет потенциальную опасность. При выполнении оператора присваивания копируются только те поля данных, которые являются общими для обоих типов.
41 Конструкторы/Деструкторы. Чтобы использовать виртуальные методы, необходимо в описании объекта после заголовка метода добавить ключевое слово virtual. Заголовки виртуальных методов родителя и наследника должны в точности совпадать. Инициализация экземпляра объекта, имеющего виртуальные методы, должна выполняться с помощью специального метода — конструктора. Конструктор обычно присваивает полям объекта начальные значения и выполняет другие действия по инициализации объекта. В заголовке метода-конструктора слово procedure заменяется словом constructor. Действия, обратные действиям конструктора, выполняет еще один специальный метод — деструктор. Он описывается словом destructor. Конструктор выполняет действия по подготовке позднего связывания. Эти действия заключаются в создании указателя на таблицу виртуальных методов, которая в дальнейшем используется для поиска методов. Таблица содержит адреса всех виртуальных методов. При вызове виртуального метода по его имени определяется адрес, а затем по этому адресу передается управление. У каждого объектного типа имеется своя собственная таблица виртуальных методов, что и позволяет одному и тому же оператору вызывать разные процедуры. Если имеется несколько экземпляров объектов одного типа, то недостаточно вызвать конструктор для одного из них, а затем просто скопировать этот экземпляр во все остальные. Каждый объект должен иметь свой собственный конструктор который вызывается для каждого экземпляра. В противном случае возможен сбой в работе программы. Замечу, что конструктор и деструктор могут быть и «пустыми», то есть не содержать операторов. Весь необходимый код в этом случае создается при трансляции ключевых слов constructor и destructor.
Не нашли, что искали? Воспользуйтесь поиском:
|