2015-11-06 9 views
1

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

+0

Я думаю, что это также зависит от размера слова и выравнивания. –

+0

@ ZangMingJie Я имел в виду только гарантию процесса. Будет редактировать. – Museful

ответ

2

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

+0

Здесь говорится [здесь] (http://www.cplusplus.com/reference/cstddef/offsetof/), что 'offsetof' требует класс POD, который является более сильным требованием, чем standard_layout. Вот почему я пришел сюда, чтобы спросить. – Museful

+0

@tennenrishin Проверьте вкладку C++ 11. – Columbo

+0

О, плагин для браузера не позволял ему отображать вкладки, поэтому он перечислял все требования со всех стандартов! Это действительно не смутило мой день для меня. Благодарю. – Museful

 Смежные вопросы

  • Нет связанных вопросов^_^