我在 C++ 中有以下结构
struct A {
int a;
double b;
float c;
}
该结构与添加了函数的结构之间的内存布局是否存在差异?
struct B {
int a;
double b;
float c;
void foo();
}
B::foo() { //do stuff }
C++ 标准保证 C 结构体和 C++ 类(或结构体——相同的东西)的内存布局将是相同的,前提是 C++ 类/结构体符合 POD(“纯旧数据”)的标准。那么POD是什么意思呢?
如果满足以下条件,则类或结构是 POD:
所有数据成员都是公共的,并且它们本身是 POD 或基本类型(但不是引用或指向成员的指针类型),或此类的数组
- 它没有用户定义的构造函数、赋值运算符或析构函数
- 它没有虚函数
- 它没有基类
所以是的,在你的情况下,内存布局是相同的。
Source: 内存中 C++ 对象的结构与结构 https://stackoverflow.com/questions/422830/structure-of-a-c-object-in-memory-vs-a-struct
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)