gpt4 book ai didi

C++成员布局

转载 作者:可可西里 更新时间:2023-11-01 18:43:34 25 4
gpt4 key购买 nike

让我们有一个简单的结构 (POD)。

struct xyz
{
float x, y, z;
};

我可以假设以下代码没问题吗?我可以假设没有任何差距吗?标准是怎么说的? POD 是这样吗?类(class)也是如此吗?

xyz v;
float* p = &v.x;
p[0] = 1.0f;
p[1] = 2.0f; // Is it ok?
p[2] = 3.0f; // Is it ok?

最佳答案

这里的答案有点棘手。 C++ 标准规定 POD 数据类型将具有 C 布局兼容性保证 (Reference)。根据第 9.2在 C 规范中,结构的成员将按顺序排列,如果

  1. 没有可访问性修饰符的区别
  2. 数据类型没有对齐问题

是的,只要 float 类型在当前平台上具有兼容的对齐方式(即平台字长),这个解决方案就可以工作。所以这应该适用于 32 位处理器,但我猜它对 64 位处理器会失败。基本上 sizeof(void*) 不同于 sizeof(float)

的地方

关于C++成员布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2088401/

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