gpt4 book ai didi

c++ - POD 类型的填充字节是否被复制?

转载 作者:IT老高 更新时间:2023-10-28 13:58:25 25 4
gpt4 key购买 nike

假设我有一个像这样的 POD 类型:

struct A {
char a;
int b;
};

在我的系统上,sizeof(A) == 8,即使 sizeof(char) == 1sizeof(b) == 4。这意味着数据结构有 3 个未使用的字节。

现在假设我们这样做

A x = ...;
A y =x;

问题:

是否保证 xy 的所有 8 个字节都是相同的,即使是那些未使用的 3 个字节?

等效地,如果我将一些 A 对象的底层字节传输到另一个不理解它们的含义或结构的程序,并将它们视为一个 8 字节的数组,那么其他程序可以安全地比较两个 A 是否相等?

注意:In an experiment with gcc 7 ,看来这些字节确实被复制了。我想知道这是否得到保证。

最佳答案

The implicitly-defined copy/move constructor for a non-union class X performs a memberwise copy/move of its bases and members.

N4141 中的 12.8/15 [class.copy]

因此允许填充字节中的位模式不同。

关于c++ - POD 类型的填充字节是否被复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46875027/

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