![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#21 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]() Цитата:
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
|
![]() |
![]() |
![]() |
#22 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]()
"Полиморфизм" - "множество форм".
Любое явление, способное иметь множество форм является полиморфным. При этом, сам принцип действия конкретной технологии, обеспечивающий возможность существования полиморфных явлений не имеет значения для определения явления, как "полиморфного", или "не полиморфного". Другими словами, явление полиморфно, просто потому, что может иметь множество форм. Не важно, как именно эта возможность была осуществлена. На языке с++ существуют две технологии полиморфизма: - статический (перегрузка функций, шаблоны) - динамический (механизм виртуальных функций) Ни одна из этих технологий (а так же их комбинации) не позволяют создавать тип данных, способный менять свою форму. Таким образом, полиморфизм на языке с++ - это лишь иллюзия полиморфности типов. Технологии могут обеспечивать полиморфность поведения объектов, но не самих типов данных. А полиморфность поведения объектов можно реализовать множеством самых разных способов и без всякого virtual На языке строгой статической типизации все типы - строго статичны (ваш Кэп). Однако, говоря о типах, две эти технологии, особенно если их комбинировать - предоставляют возможность имитировать полиморфизм да так лихо, что можно создавать не только полную иллюзию того, что функция работает с разными типами объектов так, словно это один и тот же тип, но и реализовать имитацию рефлекции: иллюзия того, что объект в рантайме изменяет строение собственного типа. Можно добавлять мемберы, или методы. и бла бла бла. Цена за это: потери на поддержку механизма виртуальных функций, и ужассающе монстроподобный хардкор на шаблонах. Впрочем, есть серьёзное подозрение, что "полиморфизм" динамических языков - суть тоже самое, только "стандартизированная технология, которую поддерживает компилятор динамического языка". То есть, там на уровне компилятора так же используется механика указателей на функции и тд и тп. Последний раз редактировалось _Bers; 18.07.2012 в 19:09. |
![]() |
![]() |
![]() |
#23 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]()
А ещё нужно понимать, что такое "Множество форм". В консольных приложениях, это означает "множество потоков". В Билдере, множество визуальных форм (и потоков). В VS, множество визуальных, виртуальнх форм и потоков.
Так, что-же такое полиморфизм? На мой взгляд, одна из форм неопределённости понятий. Просто, авторы языка несколько не правильно выразили свою мысль. В инете, есть много определений. И в классической литературе, никто толком об этом ничего не знает. Нет, есть частные определения, но строгого - нет.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
![]() |
![]() |
![]() |
#24 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]()
"Множество форм" - это самая обычная обывательская фраза. Это же не какой нибудь научный термин)
Вот можно например сказать: "множество яблок". Что это значит? Что яблоко не одно, а их множество. Здесь - тоже самое. Множество форм у одной и той же сущности. Если речь идет об экземпляре класса - у экземпляра может быть несколько различных строений. Однако, на языке с++ типы статичны. Но можно сделать иллюзию того, что они полиморфны. И работать с ними, как с полиморфными. |
![]() |
![]() |
![]() |
#25 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]() Цитата:
Вы хороший человек и в репутацию, Вам ++.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 18.07.2012 в 19:28. |
|
![]() |
![]() |
![]() |
#26 |
В прострации
Форумчанин
Регистрация: 13.01.2009
Сообщений: 239
|
![]()
Smitt&Wesson, я-то тут при чём? Я лишь хотел попросить ТС подробнее описать что именно ему непонятно
![]()
Пол-жизни сидючи, в монитор глядючи...
![]() |
![]() |
![]() |
![]() |
#27 |
Форумчанин
Регистрация: 28.05.2011
Сообщений: 309
|
![]()
Например: есть телефон, на нем есть 9 клавиш, любую клавишу можно использовать одним и тем же НАЖАТИЕМ, а результат будет у каждой клавиши свой..
Я правильно понял?
Спеши медленно.
|
![]() |
![]() |
![]() |
#28 | |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,368
|
![]() Цитата:
Полиморфизм позволяет старому коду вызывать новый (без переделывания кода). |
|
![]() |
![]() |
![]() |
#29 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 505
|
![]()
Ну вот наконец тройной с**ч закончился вменяемым объяснением ТС. А то я уже устал читать.
2asmars - правильно, правильно.
Знающий не говорит, говорящий не знает (С) Лао Цзы
|
![]() |
![]() |
![]() |
#30 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,368
|
![]()
Что именно? Что все функции виртуальны или что это реализовано через указатель? Если первое, то отнюдь, это прописано в спецификации языка.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Полиморфизм | Anubys | Помощь студентам | 1 | 26.12.2011 20:42 |
Полиморфизм | Zorgan | Visual C++ | 22 | 29.08.2011 12:23 |
Полиморфизм | MasterSporta | Общие вопросы C/C++ | 3 | 10.04.2011 23:46 |
полиморфизм | slayerblya | Общие вопросы C/C++ | 1 | 27.02.2011 01:43 |
Полиморфизм | mister2010 | Общие вопросы C/C++ | 30 | 24.05.2010 01:07 |