Оптимизация, добавленная компилятором, приводит к другому поведению «финальных» методов

Я попросил пост с тот же заголовок. Но из-за неправильной интерпретации все ответы обсуждались, если это правильный код / ​​поведение или нет.

Однако главный вопрос заключается в том, пойдет ли оптимизация или нет?

Со ссылкой на связанный пост, посмотрите подлинный случай:

D *pD = new D;
pD->foo();  // `D::foo()` is `final`

Будут ли оптимизированы все компиляторы pD->foo() вызывать не включив виртуальный механизм?

[Заметка:
Почему я привел пример с плохим кодом в предыдущем вопросе?
Я осознаю, что приведение вышеприведенного пути от базового к ребенку не является хорошим кодом. Основное намерение состояло в том, чтобы проверить, происходит ли Java-подобная оптимизация для финала или нет, и первый способ — единственный способ проверить это, не переходя к сборке.
]

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]