У меня есть следующий код
class Rect
{
public:
int width = 10;
int height = 20;
};
int _tmain(int argc, _TCHAR* argv[])
{
Rect rect;
Rect rects;
//rect = rects;
cout << sizeof(Rect) << endl; // prints 8 which is fine
cout << &rect.width << "\t" << &rect.height << endl; // prints 0027FEC8 0027FECC
cout << &rects.width << "\t" << &rects.height << endl; // prints 0027FEB8 0027FEBC
Мой вопрос: почему всегда существует разница в два раза между адресами двух объектов? Например, 0027FEC8 - 0027FEB8 - 16. Когда я добавляю другую переменную-член типа int, разница составляет 24 и так далее ...
Может ли кто-нибудь объяснить, почему существует разница в адресе, в два раза превышающем размер класса (который составляет 8 байт). Я надеялся увидеть ширину переменной члена второго объекта по адресу 0027FEC0, но это на 12 байт вперед, как и адрес переменных высоты второго объекта. Это почему?