gpt4 book ai didi

c++ - C++ 中的类布局 : Why are members sometimes ordered?

转载 作者:可可西里 更新时间:2023-11-01 16:37:12 25 4
gpt4 key购买 nike

C++ 标准规定,单个访问部分内的成员变量必须按照它们声明时的相同顺序在内存中布局。同时,编译器可以自由选择访问部分的相互顺序。这种自由使得理论上不可能链接由不同编译器创建的二进制文件。那么,严格的段内排序的其余原因是什么? 即将推出的 C++09 新的 C++11 标准是否提供了一种完全“手动”确定对象布局的方法?

最佳答案

This freedom makes it impossible in theory to link binaries created by different compilers.

由于多种原因这是不可能的,结构布局是最次要的。 vtables,operator newdelete 的实现,数据类型大小...

So what are the remaining reasons for the strict in-section ordering?

C 兼容性,我本以为,因此对于给定的编译器集,用 C 定义的结构与在 C++ 中的打包方式相同

And does the new C++0911 standard provide a way to fully determine object layouts "by hand"?

不,不超过当前标准。

但是,对于没有 vtable 和完全私有(private)(或公共(public))字段的 classstruct,如果您使用 [u]int 就已经可以了[8|16|32|64]_t 类型。除了这个,您还有什么用例?

关于c++ - C++ 中的类布局 : Why are members sometimes ordered?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/289559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com