Будет ли элемент данных класса standard_layout иметь фиксированное смещение от адреса объекта?
Если класс is_standard_layout, достаточно ли этого, чтобы гарантировать, что данный нестатический член данных всегда будет иметь одинаковое смещение от адреса объекта (т. Е. Одинаково для разных экземпляров этого класса в рамках всего процесса)?
1 ответ
Решение
Это эффективно для объектов любого типа (в рамках программы). Доступ к подобъекту происходит через смещения, которые известны во время компиляции и постоянны в машинном коде. Для типов SL вы можете проверить это через offsetof
- который гарантированно работает для типов стандартной компоновки и в основном предполагает равномерное смещение.