gpt4 book ai didi

c++ - 结构中的内存布局差异

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:59 25 4
gpt4 key购买 nike

我在 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,如果:

所有数据成员都是公共(public)的,它们本身是 POD 或基本类型(但不是引用或指向成员的指针类型),或此类的数组

  • 它没有用户定义的构造函数、赋值运算符或析构函数
  • 没有虚函数
  • 它没有基类

所以是的,在您的情况下,内存布局是相同的。

来源:Structure of a C++ Object in Memory Vs a Struct

关于c++ - 结构中的内存布局差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49407290/

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