Обсуждение
Я знаю, что все известные мне реализации (например, компиляторы C++) реализуют динамическую диспетчеризацию с помощью виртуальных таблиц диспетчеризации и указателей виртуальных таблиц (т. е. известных vtable
и vptr
).
Однако, исследуя стандарт C++, я обнаружил, что стандарт C++ не предписывает, как именно должна быть реализована динамическая диспетчеризация. Это означает, что поставщик может использовать альтернативный метод динамической диспетчеризации при условии, что его поведение соответствует требованиям стандарта C++ для поведения динамической диспетчеризации.
Вопросы
Q1. Существуют ли какие-либо другие допустимые методы, кроме
vtable
s иvptr
s, с помощью которых можно было бы реализовать динамическую диспетчеризацию?Вопрос 2. Если Вопрос 1 верен: по каким причинам, если таковые имеются, разработчики решили использовать
vtable
s иvptr
s для реализации динамической диспетчеризации вместо какого-либо другого допустимого метода?