|
0 / 0 / 0
Регистрация: 08.02.2016
Сообщений: 25
|
|
Что означает динамический и статический полиформизм?02.04.2016, 14:34. Показов 32781. Ответов 4
Метки нет (Все метки)
Здравствуйте, есть тема полиморфизм. В ней присутствуют два вида динамический и статический. Статический творит что-то на компляции, а второй во время выполнения Не пойму, данные слова, можно ли это поподробнее?
0
|
|
| 02.04.2016, 14:34 | |
|
Ответы с готовыми решениями:
4
Что такое статический и динамический массивы? Что лучше динамический или статический?
|
|
6 / 6 / 3
Регистрация: 31.08.2015
Сообщений: 56
|
|
| 02.04.2016, 14:48 | |
|
Aristarhh,
Полиморфизм позволяет коду быть более гибким. Переопределение, наследование виртуальных методов, перегрузка методов... Так вот когда эти инструменты используются во время компиляции (когда мы уже переводим наш код высокого уровня в машинный код) - это статический полиморфизм, а когда в рантайме (в процессе выполнения программы) - динамический. В основном перегрузка методов и операторов - это статический полиморфизм, а переопределение виртуальных методов более узкоспециализированными классами - это динамический полиморфизм. Могу ошибаться, но я понял так.
2
|
|
|
0 / 0 / 0
Регистрация: 08.02.2016
Сообщений: 25
|
|
| 02.04.2016, 21:35 [ТС] | |
|
Leonin, спасибо, но вот динамический полиморфизм, а каким образом я могу применить какие либо действия во время выполнения, можно пример?)
0
|
|
|
6 / 6 / 3
Регистрация: 31.08.2015
Сообщений: 56
|
|
| 03.04.2016, 02:24 | |
Сообщение было отмечено Aristarhh как решение
Решение
Aristarhh, Вот хорошее определение, где происходит динамический полиморфизм:
Если при наличии многоуровневой иерархии виртуальный метод не переопределяется в производном классе, то выполняется ближайший его вариант, обнаруживаемый вверх по иерархии на стадии выполнения приложения. Допустим, есть класс asbstract class Animal с виртуальным методом virtual Move (). Разные животное по разному передвигаются: птицы летают, рыбы плывут, мы с вами ходим. Но в Move () базового абстрактного класса уже определена как бы общая реализация метода. К примеру, мы точно можем сказать, что положение в пространстве будет меняться. Мы решили создать свое новое животное. Но мы пока не знаем, как именно будет происходить его передвижение в этом случае мы не еще не реализовали более специфичный метод передвижения. Но в любом случае наше животное class MyAnimal наследуется от Animal и имеет метод Move. Теперь, допустим, мы придумали, как он будет двигаться и переопределили метод. Два метода имеют ту же сигнатуру и одно название. Какой из методов вызывать: родителя или потомка? Ответ на этот вопрос дается во время компиляции. Заключение: первое предложение в ответе.
1
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||
| 03.04.2016, 03:01 | |||||||
|
Динамический - адрес метода который вызывается определяется в рантайме (из VMT объекта чей метод вызывается). Пример - есть действительно рыбки птички и т.п. Запихнули элементы всех в один массив Animal Animals[]. Вызываем для каждого элемента массива Animals виртуальный метод Move, и каждый элемент плывет, летит скачет по своему. Есть еще параметрический полиморфизм. Пример - у каждого Animal есть поле в котором помечено кто он и куча методов которые реализуют поведение. в методе Move класса Animal примерно вот такой код:
3
|
|||||||
| 03.04.2016, 03:01 | |
|
Помогаю со студенческими работами здесь
5
Статический и динамический массив Динамический массив в статический
Статический и динамический стек Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|