Что значит поддерживать двоичную совместимость для вас?
Структура объекта будет такой же, но вы нарушите Правило единого определения , если только не перекомпилируете весь код, и в этот момент двоичная совместимость в основном бесполезна. Без перекомпиляции ODR прерывается, и, хотя может быть, что он работает, он также может не работать.
В частности, если все виртуальные методы в классе либо чистые, либо определены как встроенные, то компилятор может сгенерировать виртуальную таблицу в каждой единице перевода, которая включает заголовок, и пометить ее как слабый символ. Затем компоновщик выберет один из них и откажется от всех остальных. В этой ситуации компоновщику не требуется проверять, что все виртуальные таблицы в точности совпадают, и он выберет один случайным образом (или определенным образом неопределенным образом), и он может выбрать один такой виртуальный файл, где метод является чисто виртуальным, что в Turn может привести к сбою приложения, если метод вызывается для объекта базового класса.