c++ - standard_layout 类的数据成员是否与对象的地址有固定的偏移量?

标签 c++ typetraits offsetof object-layout

如果一个类is_standard_layout ,是否足以保证给定的非静态数据成员始终与对象的地址具有相同的偏移量(即在该类的不同实例中,进程范围内相同)?

最佳答案

这实际上必须适用于任何类型的对象(在程序中)。访问子对象是通过偏移量发生的,这些偏移量在编译时已知并且在机器代码中是常量。对于 SL 类型,您可以通过 offsetof 验证这一点 - 这保证适用于标准布局类型并且基本上意味着统一的偏移量。

关于c++ - standard_layout 类的数据成员是否与对象的地址有固定的偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33563134/

相关文章:

c++ - cstdint 之外的数字类型

c++ - 逐位定义(c++ 浅拷贝)

c++ - 像std::is_pointer和std::is_integral,std::is_cstring_pointer如何实现?

c++ - 判断一个类型是否是类类型?

c++ - 通过强制转换 nullptr 获取成员变量的偏移量

c - c struct-embedded union 中的成员对齐

c - 在自定义宏中使用 offsetof 宏

c++ - 琐碎的 C++ 代码……为什么要编译?

c++ - 运行最基本的 sfml 应用程序时的性能问题

c++ - 如何推断最嵌套的迭代器类型?