仮想および非仮想メンバー関数によってアクセスされる、多数のプライベート データ メンバー (一部は静的) を持つクラスがあります。インライン関数もフレンド クラスもありません。
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 です。