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

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

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

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

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

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

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

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

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

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

Из книги Как справиться с компьютерной зависимостью автора Краснова С В

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


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

Из книги Win2K FAQ (v. 6.0) автора Шашков Алексей

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


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

Из книги Цифровой журнал «Компьютерра» № 17 [17.05.2010 — 23.05.2010] автора Журнал «Компьютерра»

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


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

Из книги Asterisk™: будущее телефонии Второе издание автора Меггелен Джим Ван

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


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

Из книги Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ автора Мейерс Скотт

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


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

Из книги Удвоение продаж в интернет-магазине автора Парабеллум Андрей Алексеевич

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


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

Из книги Цифровой журнал «Компьютерра» № 156 автора Журнал «Компьютерра»

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


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

Из книги Цифровой журнал «Компьютерра» № 177 автора Журнал «Компьютерра»

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


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

Из книги Цифровой журнал «Компьютерра» № 17 (170) автора Журнал «Компьютерра»

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


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

Из книги Цифровой журнал «Компьютерра» № 194 автора Журнал «Компьютерра»

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


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

Из книги Цифровой журнал «Компьютерра» № 197 автора Журнал «Компьютерра»

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


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

Из книги Цифровой журнал «Компьютерра» № 220 автора Журнал «Компьютерра»

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


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

Из книги Как тестируют в Google автора Уиттакер Джеймс

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


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

Из книги Linux и все, все, все... Статьи и колонки в LinuxFormat, 2006-2013 автора Федорчук Алексей Викторович

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


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

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

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