Потому что они в одном месте. Первый элемент в struct A
является struct B
, поэтому они фактически находятся в одном и том же месте памяти (после этого b
будет помещено что-либо еще в struct A
).
Аналогичным образом x
- первый бит данных в struct B
, поэтому он находится в том же положении, что и struct B
.
Очень важно отметить, что это не всегда будет верно. Такие вещи, как виртуальные функции, заставят вещи двигаться. Это верно в этом случае, потому что они простые классы / структуры.