Стандарт C++ налагает порядок на переменные класса класса в памяти. В нем говорится, что адреса переменных-членов должны увеличиваться в порядке объявления, но только внутри одной секции доступа. В частности, это, по-видимому, не мешает компиляторам распределять разделы доступа чередующимся образом. Например:Можно ли чередовать разделы доступа C++?
class X {
public:
int i;
int j;
private:
int k;
int n;
}
стандарт позволит ли компиляторы раскладывать элементы данных в порядке, я, K, J, N? Это даст компиляторам некоторую (ограниченную) свободу в оптимизации макета объекта без нарушения стандарта.
Спасибо за ответ, это довольно однозначно. Интересно, есть ли там компиляторы, которые используют эту возможность для уменьшения заполнения внутренних объектов. – 2012-04-07 16:37:29