Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
MasterZivТак я же знаю.Иллюзия знания хуже, чем отсутствие знаний.Там все методы виртуальные.Цитирую избранные места JLS6 (выделено мною): 8.4.3.2 static MethodsA method that is declared static is called a class method. A class method is always invoked without reference to a particular object . 8.4.3.3 final MethodsA method can be declared final to prevent subclasses from overriding or hiding it. It is a compile-time error to attempt to override or hide a final method . A private method and all methods declared immediately within a final class (§8.1.1.2) behave as if they are final, since it is impossible to override them. It is a compile-time error for a final method to be declared abstract. At run time, a machine-code generator or optimizer can "inline" the body of a final method, replacing an invocation of the method with the code in its body. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 13:13 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Ой. всё. А функции в языке Fortran ты не хочешь рассмотреть на предмет их виртуальности в данном контексте? Или скажем функции WinAPI... Вот функции WinAPI -- они виртуальные или нет ? А функции (процедуры) FORTRAN? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 13:19 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
MasterZivА функции в языке FortranЯ не лезу туда, где не понимаю. Исходное утверждение было сделано о виртуальности всех функций во вполне конкретном языке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 13:25 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovMasterZivА функции в языке FortranЯ не лезу туда, где не понимаю. Исходное утверждение было сделано о виртуальности всех функций во вполне конкретном языке. Ну методов же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 13:26 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Да-да, к пуговицам претензий нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 13:28 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovВ Java, невиртуальным является любой метод с модификаторами private или final. Просто по определению. Вот, B::test() - final, а значит не виртуальный (просто по определению) Вопрос: что напечатает программа? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 14:49 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
.java Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. java Test$Main Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 14:58 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovстатические методы А про final что? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 15:07 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Чтобы уж совсем без вопросов ... Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 15:07 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyА про final что? )))В смысле? Модификатор final запрещает сокрытие и переопределение, поэтому в условиях примера будет ошибка компиляции. С модификатором static (без final) - у предка и потомка есть разные, но одноимённые методы с одинаковыми сигнатурами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 15:15 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovМодификатор final запрещает сокрытие и переопределение, поэтому в условиях примера будет ошибка компиляции. Не будет ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 15:37 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyНе будет ошибки. Код: plaintext 1. 2. 3. 4. .java Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 16:20 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, А можно все-таки мой пример, а не ваш проверять ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 16:33 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovsemen.s.semenВ гугле на ряде проектов строго требуется неиспользовать исключения и уходить от виртуальных методов Если в гугловском Го виртуальные методы и исключения невыносимо тормозят, то... это проблема гугля. Скорее всего у них там речь не про тормоза, а стоит некий автоматический проверяльщик хода выполнения кода. Они видимо не могут определить куда будет передано управление при вызове виртуальных функций и кидании эксепшенов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 17:46 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyА можно все-таки мой пример, а не ваш проверять )))А что, простите, проверять в вашем недооформленном примере: javap -c Test Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 18:41 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
invokevirtual для вызова final метода, который якобы невиртуальный. Чудеса )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 18:55 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyinvokevirtual для вызова final метода, который якобы невиртуальный. Чудеса ))Я неправ в отношении final, но вы иллюстрируете мою ошибку неверным примером. Из байт-кода, который генерирует javac видно, что вызов делается по объявленному типу переменной, а созданный вами финальный метод - вообще не участвует. Это первое. Второе. Что останется от виртуальности в процессе исполнения - неизвестно. Это уже несколько более другой инструментарий, но, насколько я понимаю, ситуации вполне тривиальная для оптимизации и никаких эвристик не требует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 19:06 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovИз байт-кода, который генерирует javac видно, что вызов делается по объявленному типу переменной, а созданный вами финальный метод - вообще не участвует. Как же не участвует? Что выводит программа?)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 19:10 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
порезано цензурой ... Спать-гулять надо: и думаю плохо и и какие-то тупые ошибки делаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 19:20 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
готово к употреблению без применения напильника Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 19:25 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov готово к употреблению без применения напильника Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. И что сие доказывает ? Что в java все нестатические методы виртуальные ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 19:45 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
semen.s.semenЧто в java все нестатические методы виртуальные ?В байт-коде для финального метода делается invokevirtual "на общих основаниях". Что будет в процессе исполнения - надо смотреть отдельно, но уже сложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 19:54 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovsemen.s.semenЧто в java все нестатические методы виртуальные ?В байт-коде для финального метода делается invokevirtual "на общих основаниях". Что будет в процессе исполнения - надо смотреть отдельно, но уже сложнее. В любом случае это будет поведение виртуального метода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 19:57 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
semen.s.semenВ любом случае это будет поведение виртуального методаСреда исполнения может и девиртуализировать и встроить вызов финального метода. Это предусмотрено уже в JLS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 20:02 |
|
||
|
Virtual method + Exceptions in C++
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovsemen.s.semenВ любом случае это будет поведение виртуального методаСреда исполнения может и девиртуализировать и встроить вызов финального метода. Это предусмотрено уже в JLS. Как там среда себя не вела - вызван будет метод ребенка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 20:03 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39649385&tid=2017852]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 280ms |
| total: | 421ms |

| 0 / 0 |
