Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 373
Записей в блоге: 2
1

ООП: Зачем нужна таблица виртуальных методов? Она замедляет работу программы

15.01.2018, 23:05. Показов 1938. Ответов 3
Метки нет (Все метки)

Разве нельзя определить, метод какого класса вызывать во время компиляции?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2018, 23:05
Ответы с готовыми решениями:

Замедляет ли работу программы использование библиотек?
Когда используется библиотеки в коде они как нибудь замедляют работу программы, и при компиляции...

Насколько блок try-catch замедляет работу программы?
У меня возник следующий вопрос, насколько блок try-catch замедляет работу программы, стоит ли...

Возможности модификации программы при использовании виртуальных методов
Приветики, всем доброго время суток!!! Разбираю задачку по PASCAL и наткнулся на ошибку № 3 в ...

Зачем нужна перегрузка методов?
Люди, объясните мне пожалуйста, зачем нужна перегрузка методов.

3
298 / 107 / 31
Регистрация: 12.03.2012
Сообщений: 449
15.01.2018, 23:23 2
Почитайте про полиморфизм
0
12 / 12 / 6
Регистрация: 15.01.2015
Сообщений: 36
15.01.2018, 23:31 3
Лучший ответ Сообщение было отмечено mkostoevr как решение

Решение

Ну вообще виртуальные функции(методы) используються например в таком случае.Чтобы облегчить написание кода ты берешь и создаешь массив указателей типа класса родителя , которые указываёть на его дочерние(полиморфные) теперь если ты реализуеш некую функцию в классе родителе и сделаш ее v виртуальной(virtual) , то ты сможешь легко перезагружать эти ф-и для каждого из классов.Если тебе надо объявить такую ф-ю , какая имеет ранее связывание , то есть взарание известно что она будет именно такой , то просто не указывай virtual.В этой табличку могут только появиться констркуторы по умолчанию .Чисто компилятор создает отдельное поле сркытое для хранение указателя на таблицу.Также он создает соотвуствующий код в конструкторе для инициализации этих таблиц адресами.Такая таблица и вправду достаточно затратная по времени.Компиляторы пытаються не использывать табдицы , если нет на это потребности , но по другому я незнаю способа как можно это избежать.Думаю ответ поможет.
1
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 373
Записей в блоге: 2
16.01.2018, 14:39  [ТС] 4
denistymchuk, немного въехал, благодарю!

Добавлено через 15 часов 1 минуту
denistymchuk, ежкин крот, я только сейчас полностью в?ехал. Указатель то может инититься в функции из другого модуля, доступа к которому у компилятора в момент компиляции нет.

Теперь все понял. Ещё раз, благодарю!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2018, 14:39
Помогаю со студенческими работами здесь

Переменная PATH: зачем она нужна ?
Я понимаю, что эта переменная хранит каталоги с исполняемыми файлами некоторых программ, но зачем...

Активация 2-х ядер процессора. Зачем она нужна?
Вобщим проблема такая- купил новую материнку и процессор. Материнка ASUS чип AMD770 маркировка...

Что такое рекурсия? Зачем она нужна?
Объясните пож человеческим языком, что такое Рекурсия. Я знаю что это вызов функции самой себя....

ООП(зачем нужна инициализация переменных в конструкторе Box)
package pkg1; public class Main { public static void main(String args) { BoxWeight...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru