Будет ли элемент данных класса standard_layout иметь фиксированное смещение от адреса объекта?

Если класс is_standard_layout, достаточно ли этого, чтобы гарантировать, что данный нестатический член данных всегда будет иметь одинаковое смещение от адреса объекта (т. Е. Одинаково для разных экземпляров этого класса в рамках всего процесса)?

1 ответ

Решение

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

Другие вопросы по тегам