Re[19]: Книжка по UB
От: rg45 СССР  
Дата: 14.08.25 09:32
Оценка:
Здравствуйте, so5team, Вы писали:

S>Есть контекст -- конструктор c4.

S>В нем вызывается виртуальный метод f.
S>Стандарт описывает какая именно версия f будет вызвана в этом контексте.
S>Мы этот вызов и получаем. ЧТД.

S>А то, что в этом контексте вызов this->f() не будет отличаться от вызова c2::f(), ну так это стечение обстоятельств.


Давай пока забудем про вызов c2::f(). Мы рассматриваем конструктор класса f4 и для этого класса у нас есть два способа вызвать функцию f: 1) виртуальный — f() или this->f() и 2) невиртуальный — f4::f(). И согласно требованиям стандарта оба эти вызова должны дать один и тот же результат. Таким образом, на уровне поведения программы эти два способа неотличимы.

На всякий случай: я не утверждаю, что виртуальный вызов не выполняется. С точки зрения поведения программы это так же недоказуемо, как и неопровергаемо.
--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 14.08.2025 9:36 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.