Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Таблица виртуальных методов
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov petravадрес брали у метода предка. Уверен, что адрес берётся у предка?.. Синтаксически у предка. На практике, я думаю, вот тут: Код: plaintext 1. Возвращается адрес прокси-функции заточенной на вызов virtualMethod(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2021, 23:17 |
|
||
|
Таблица виртуальных методов
|
|||
|---|---|---|---|
|
#18+
petrav Да ладно только одна... А как же тогда работает вызов виртуальных методов, если в распоряжении у нас только адрес виртуального метода базового класса? Как правило, адресом виртуального метода является индекс указателя на метод в vtable. Соответственно, при вызове виртуального метода используется соответствующая классу таблица vtable и индекс метода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2021, 11:34 |
|
||
|
Таблица виртуальных методов
|
|||
|---|---|---|---|
|
#18+
rdb_dev petrav Да ладно только одна... А как же тогда работает вызов виртуальных методов, если в распоряжении у нас только адрес виртуального метода базового класса? Как правило, адресом виртуального метода является индекс указателя на метод в vtable. Соответственно, при вызове виртуального метода используется соответствующая классу таблица vtable и индекс метода. Я думал о таком варианте, но в случае Студии это явно не так. Было бы интересно узнать почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2021, 20:44 |
|
||
|
Таблица виртуальных методов
|
|||
|---|---|---|---|
|
#18+
petrav, встаёт вопрос как проверить, что функция виртуальная перегружена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2021, 17:46 |
|
||
|
Таблица виртуальных методов
|
|||
|---|---|---|---|
|
#18+
petrav Я думал о таком варианте, но в случае Студии это явно не так. Было бы интересно узнать почему. Истоки этого в том что тип указателя не меняется от того виртуальная ф-я или нет, хотя вызываются они по разному. Это значит что вызывающий код должен в рантайме определить какой это указатель. В GCC в указателе есть флаг и происходит проверка этого флага и ветвление. В VS чтобы избежать ветвления хранят адрес прокси. Возможно какой-то из этих подходов лучше, но думаю что причина по которой подходы разные в том что когда-то было выбрано какое-то решение, но потом так просто сменить ABI уже не получилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2021, 11:02 |
|
||
|
Таблица виртуальных методов
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyВ GCC в указателе есть флаг и происходит проверка этого флага и ветвление. В VS чтобы избежать ветвления хранят адрес прокси. Вообще-то вывод выше из GCC, так что там, скорее всего, тоже прокси. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2021, 13:39 |
|
||
|
Таблица виртуальных методов
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Вообще-то вывод выше из GCC, так что там, скорее всего, тоже прокси. В вашем коде компилятор знает конкретные адреса функций каждого объекта потому что видит весь код. Я же говорил про чистый полиморфизм - когда есть только указатель на базовый класс и указатель на его метод который надо вызвать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2021, 20:59 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2017183]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
79ms |
get topic data: |
10ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 193ms |

| 0 / 0 |
