У меня есть класс с количеством закрытых членов данных (некоторые из них статические), доступ к которым осуществляется с помощью виртуальных и не виртуальных функций-членов. Здесь нет встроенных функций и классов-друзей.
class A
{
int number;
string str;
static const int static_const_number;
bool b;
public:
A();
virtual ~A();
public:
// got virtual and non-virtual functions, working with these memebers
virtual void func1();
void func2();
// no inline functions or friends
};
В этом случае изменение порядка элементов личных данных нарушает ABI?
class A
{
string str;
static const int static_const_number;
int number; // <-- integer member moved here
bool b;
...
};
Редактировать
Типы не изменены, только порядок членов. Битовые флаги также не используются.
Код используется в качестве разделяемой библиотеки, статическая ссылка на этот код отсутствует.
У меня Linux и компиляторы gcc-3.4.3 и gcc-4.1