是结构复制标准

Is struct copying standard?

本文关键字:标准 复制 结构      更新时间:2023-10-16

这似乎适用于我的编译器,但它是标准的吗?我应该改做记忆吗?

struct Foo { u32 a, b; u8 c[24]; }
class Bar {
    Foo f; 
public: 
    Bar(Foo&f):f(f){} 
};

在C++11国际标准中,struct Foo被视为POD(普通旧数据,参见第9条规范#10),它是trivially copyable type(参见第3.9条规范#9)

按位复制通常由类型的大小决定,对于小类型,可以将其优化为简单的movl/movq指令。编译器会完成这项工作,因此在class Bar的构造函数块中不需要memcpy,因为您已经在初始化器列表Bar(Foo&f):f(f)中设置了值。