Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
semen.s.semenКак там среда себя не вела - вызван будет метод ребенкаКогда ломают копья за (не)виртуальность, то под стягом эффективности распинают накладные расходы виртуального вызова. В ситуации, когда среда исполнения девиртуализировала вызов метода и даже встроила тело метода по месту использования - пофигу, что там в байт-коде. Результат исполнения будет одинаков, а скорость будет достигнута без дополнительных усилий со стороны программиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 20:12 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovsemen.s.semenКак там среда себя не вела - вызван будет метод ребенкаКогда ломают копья за (не)виртуальность, то под стягом эффективности распинают накладные расходы виртуального вызова. В ситуации, когда среда исполнения девиртуализировала вызов метода и даже встроила тело метода по месту использования - пофигу, что там в байт-коде. Результат исполнения будет одинаков, а скорость будет достигнута без дополнительных усилий со стороны программиста. Вот бы в Яве на девиртуализации метода поэкономить =) :lol: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2018, 00:28 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
то ощущение, когда пришёл попросить научить плюсам, а в результате всех посадил на яву :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2018, 05:28 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyinvokevirtual для вызова final метода, который якобы невиртуальный. Чудеса )) Видите, даже в Java есть виртуальные методы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2018, 10:51 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovsemen.s.semenВ любом случае это будет поведение виртуального методаСреда исполнения может и девиртуализировать и встроить вызов финального метода. Это предусмотрено уже в JLS. Может. Она всё может. Даже заинлайнить может. Это сделает метод НЕвиртуальным ? Нет. В Java ВСЕ вызовы нестатических методов делаются на основании динамического типа объекта, с которым он вызывается. Т.е. ВСЕ нестатические методы классов "виртуальные", хотя даже понятия такого у них в языке нет. P.S. пример с final я не понял. Я уверен, что вызовется final метод из B, из наследника, поскольку final запрещает переопределять данный метод ниже по иерархии, но в предке этот метод остаётся таким же "виртуальным", как и был. Вот если бы в A, в предке он был final, то можно было бы ожидать невиртуального вызова (отсутствия диспетчеризации по динамическому типу объекта) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2018, 10:59 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
MasterZivМожет. Она всё может. Даже заинлайнить может. Это сделает метод НЕвиртуальным ? Нет.Если, таки читать спецификацию, то там указано, что "компилятор или среда выполнения". По байт-коду, тем не менее, видно, что компилятор ставит invokevirtual. Причина этого проста. Для среды с динамической компоновкой по требованию невозможно статически доказать, что девиртуализация и встраивание допустимы во всех сценариях исполнения. Таким образом, компилятор просто не выделывается, пытаясь доказать недоказуемое. Представим, что некто, обладающий достаточной степенью квалификации и упорства, сгенерирует корректный байт-код, в котором будет invokespecial с лямбдой или что-нибудь этакое. Метод перестанет быть виртуальным? P.S. Насколько я знаю, для плюсов тоже может быть аналогичная оптимизация. Считать оптимизируемые таким образом методы виртуальными по факту объявления и присутствию в таблице виртуальных методов или невиртуальными по способу фактического вызова? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2018, 12:21 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovP.S. Насколько я знаю, для плюсов тоже может быть аналогичная оптимизация. Считать оптимизируемые таким образом методы виртуальными по факту объявления и присутствию в таблице виртуальных методов или невиртуальными по способу фактического вызова?Если мне не изменяет память, декомпозиция в "плюсах" используется на -O3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2018, 15:18 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovПредставим, что некто, обладающий достаточной степенью квалификации и упорства, сгенерирует корректный байт-код, в котором будет invokespecial с лямбдой или что-нибудь этакое. Метод перестанет быть виртуальным? Нет, не перестанет. Но ты уже по-моему вошёл в азарт доказательсва всем обратного, так что не буду спорить с тобой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2018, 17:22 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39649977&tid=2017852]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 156ms |

| 0 / 0 |
