Что на самом деле происходит при полиморфном присоединении?

Что на самом деле происходит при полиморфном присоединении?

Все сущности, встречающиеся в предыдущих примерах полиморфных присваиваний, имеют тип ссылок: возможными значениями p, r и t являются не объекты, а ссылки на объекты. Поэтому результатом присваивания p := r является просто новое присоединение ссылки.

Рис. 14.3.  Полиморфное присоединение ссылки

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

Полиморфные присоединения допускаются только для целей типа ссылки, но, ни в коем случае, для расширенных типов. Поскольку у класса-потомка могут быть новые атрибуты, то соответствующие ему экземпляры могут иметь больше полей. На рис. 14.3 видно, что объект класса RECTANGLE больше, чем объект класса POLYGON. Такая разница в размерах объектов не приводит к проблемам, если все, что заново присоединяется, имеет тип ссылки. Но если p - не ссылка, а имеет развернутый тип (например, объявлена как expanded POLYGON), то значением p является непосредственно некоторый объект, и всякое присваивание p будет менять содержимое этого объекта. В этом случае никакой полиморфизм невозможен.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

(6.8) Как сделать, чтобы dos-программа, печатая на LPT1, на самом деле печатала на сетевой пpинтеp [\server_nameprinter_name]?

Из книги автора

(6.8) Как сделать, чтобы dos-программа, печатая на LPT1, на самом деле печатала на сетевой пpинтеp [server_nameprinter_name]? Точно так же, как и в NT4. Вводим из консоли:net use lpt1: [Server_NamePrinter_Name]При завершении работы программы можно освободить порт:net use lpt1:


Что мне на самом деле нужно

Из книги автора

Что мне на самом деле нужно Символ звездочки (*) используется как символ подстановки во многих приложениях. Это хорошее имя для данной офисной АТС по многим причинам, одна из которых - огромное число типов интерфейсов, с которыми может соединяться Asterisk. К ним относятся:•


Контакты для связи на самом видном месте

Из книги автора

Контакты для связи на самом видном месте В интернет-магазинах очень важно наличие нескольких способов оперативной связи с персоналом. Причем они всегда должны быть на виду, чтобы их не приходилось искать в каких-то разделах сайта Это нужно для того, чтобы вы могли


Бонус № 1. Зачем на самом деле нужны скидки в интернет-магазине

Из книги автора

Бонус № 1. Зачем на самом деле нужны скидки в интернет-магазине Прежде всего нужно понимать, что скидки давно являются слабоэффективным инструментом, потому что их используют если не все, то уж точно большинство интернет-магазинов. Чаще всего единственная задача скидок и


Кто такие разработчики в тестировании на самом деле?

Из книги автора

Кто такие разработчики в тестировании на самом деле? Разработчики в тестировании — это инженеры, которые помогают тестировать на всех уровнях процесса разработки Google. Но все же в первую очередь они именно разработчики. Во всех наших руководствах по найму и внутренних


Правило 7: Объявляйте деструкторы виртуальными в полиморфном базовом классе

Из книги автора

Правило 7: Объявляйте деструкторы виртуальными в полиморфном базовом классе Существует много способов отслеживать время, поэтому имеет смысл создать базовый класс TimeKeeper и производные от него классы, которые реализуют разные подходы к хронометражу:class TimeKeeper


Игра в экологию: Правда ли, что европейские бюрократы в самом деле озабочены экологией и внедрением высоких технологий Михаил Ваннах

Из книги автора

Игра в экологию: Правда ли, что европейские бюрократы в самом деле озабочены экологией и внедрением высоких технологий Михаил Ваннах Опубликовано 12 июня 2013 На нижнем уровне – муниципалитетов, коммун, общин – Европа сохраняет пригодную для


Анатолий Вассерман: Застой в компьютерном деле Михаил Карпов

Из книги автора

Анатолий Вассерман: Застой в компьютерном деле Михаил Карпов Опубликовано 21 мая 2010 года Выпуск 215 Чем обусловлен застой в компьютерной отрасли? Анатолий Вассерман считает, что основная причина заключается в исчерпании возможностей


Ханс Рейзер: точка в деле?

Из книги автора

Ханс Рейзер: точка в деле? LinuxFormat, #106 (июнь 2008)Итак, дело Ханса Рейзера, создателя файловой системы ReiserFS, обвинявшегося в убийстве своей жены, можно считать законченным. Вердикт присяжных: виновен в убийстве первой степени. То есть – заранее обдуманном и предумышленном.


Google Glass: красивые и... бесполезные! В самом деле, что проку от киберочков? Евгений Золотов

Из книги автора

Google Glass: красивые и... бесполезные! В самом деле, что проку от киберочков? Евгений Золотов Опубликовано 21 февраля 2014 Редко какой производитель решается на эксперименты, подобные поставленному Google с киберочками Glass. Продукт — тем более потенциально


Гореть, а не тлеть! Что на самом деле случилось с электроседаном Tesla Motors? Евгений Золотов

Из книги автора

Гореть, а не тлеть! Что на самом деле случилось с электроседаном Tesla Motors? Евгений Золотов Опубликовано 07 октября 2013 За неполных двадцать лет в бизнесе Элон Маск навидался всякого: взрывались интернет-компании, падали ракеты, давило нефтяное и


Уроки «кубинского Твиттера»: кто на самом деле стоит за Facebook, Google, другими ИТ-гигантами? Евгений Золотов

Из книги автора

Уроки «кубинского Твиттера»: кто на самом деле стоит за Facebook, Google, другими ИТ-гигантами? Евгений Золотов Опубликовано 07 апреля 2014 Я скептически отношусь к разделяемой многими конспирологической теории о «правительственном следе в родословной


Чем занимается Google на самом деле Олег Парамонов

Из книги автора

Чем занимается Google на самом деле Олег Парамонов Опубликовано 14 января 2013 года 14 декабря знаменитый изобретатель и футуролог Рей Курцвейл объявил, что отныне он работает в Google. О его обязанностях известно лишь в самых общих чертах. Пресс-релиз


Тест «Сколько вам на самом деле лет»

Из книги автора

Тест «Сколько вам на самом деле лет» В тесте 13 вопросов, предлагается на каждый из них выбрать один ответ.1. Ваш младший брат (сестра, ребенок, сосед) принес к вам в квартиру свой велосипед, ваша реакция:а) вы всячески стараетесь от него (имеется в виду велосипед) избавиться


Почему стартаперам кажется, что российский венчур — клондайк, и почему на самом деле это не совсем так Валентина Славина, президент НП «Бизнес-ангелы Урала»

Из книги автора

Почему стартаперам кажется, что российский венчур — клондайк, и почему на самом деле это не совсем так Валентина Славина, президент НП «Бизнес-ангелы Урала» Опубликовано 23 апреля 2013Будучи руководителем сообщества частных инвесторов ранней стадии на Урале (НП