2016-05-13 5 views
2

Некоторые аналогичные вопросы публикуются ранее, но я не мог видеть ответ для моего конкретного требования.Сопоставьте двоичные или производные классы для добавления нового метода в базовый класс

У меня есть базовый класс, который скомпилирован в общую библиотеку (.so). Эта библиотека используется, и есть некоторые классы, полученные из моей базы и использующие виртуальные функции моего базового класса.

Теперь мне нужно изменить базовый класс, чтобы добавить новый метод (НЕ-ВИРТУАЛЬНЫЙ), который будет использоваться внутри. Затем я перекомпилирую общую библиотеку.

Необходимо ли перекомпилировать производные классы? Нужно ли перекомпилировать бинарный файл, созданный с использованием производных классов и разделяемой библиотеки?

ответ

1

В вашем случае вам не нужно перекомпилировать производные классы. Перекомпиляция требуется только в том случае, если знание бинарной структуры класса, полученное из файла заголовка (используется в производных классах), изменяется. Это происходит,

  • Член данных добавляется
  • модификация выполнена в виртуальные таблицы (изменение в виртуальных функций)
  • модификация выполнена к существующей функции подписи
  • Изменения встроенных функций

Поскольку здесь не происходит, все должно быть хорошо. Ссылка from here

+0

Нет необходимости перекомпиляции при добавлении нового метода. Спасибо Smeeheey. –