Я прочитал этот вопрос: Проблема с размером объекта наследования виртуального класса C ++ и было интересно, почему виртуальное наследование приводит к дополнительному указателю vtable в классе.
Я нашел здесь статью: https://en.wikipedia.org/wiki/Virtual_inheritance
что говорит нам:
Однако это смещение в общем случае может быть известно только во время выполнения ...
Я не понимаю, что здесь связано со средой выполнения. Полная иерархия наследования классов уже известна во время компиляции. Я понимаю виртуальные функции и использование базового указателя, но с виртуальным наследованием такого нет.
Может кто-нибудь объяснить, почему некоторые компиляторы (Clang / GCC) реализуют виртуальное наследование с помощью vtable и как это используется во время выполнения?
Кстати, я также видел этот вопрос: vtable в случае виртуального наследования, но он указывает только на ответы, относящиеся к виртуальным функциям, а это не мой вопрос.