Моя библиотека имеет два класса: базовый класс и производный класс. В текущей версии библиотеки базовый класс имеет виртуальную функцию foo(), а производный класс не переопределяет ее. В следующей версии я хотел бы, чтобы производный класс переопределял его. Разве это нарушает ABI? Я знаю, что обычно вводит новую виртуальную функцию, но это похоже на частный случай. Моя интуиция заключается в том, что она должна менять смещение в vtbl, не изменяя при этом размер таблицы.
Очевидно, что, поскольку стандарт С++ не предусматривает конкретного ABI, этот вопрос имеет определенную специфику для платформы, но на практике то, что разбивает и поддерживает ABI, похоже на большинство компиляторов. Меня интересует поведение GCC, но чем больше компиляторов люди могут ответить, тем полезнее этот вопрос будет:)