是结构复制标准
Is struct copying standard?
这似乎适用于我的编译器,但它是标准的吗?我应该改做记忆吗?
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)
中设置了值。
相关文章:
- 并行标准::复制复杂性
- 如何将字符*浅复制到标准::字符串?
- 如何在不复制数据的情况下将 cv::Mat 转换为 2d 标准::矢量
- 从标准容器重新绑定和复制分配器
- C 标准:通过复制返回以初始化无RVO的参考:是否有任何副本
- 标准::列表转换和复制
- 复制省略用于列表初始化,它在标准中在哪里说明?
- 标准::复制构造函数中的字符串行为
- 使用标准库根据一个数组对两个数组进行排序(避免复制步骤)
- 了解标准::复制
- 标准::复制失败,"cannot seek vector iterator after end"
- 非复制标准::shared_ptr<提升::任何>?
- C++标准是否允许复制任意多态数据结构?
- 提升::可选与标准::不可复制对象的可选
- 标准::atomic_应该如何...<std::shared_ptr>用于线程安全类的复制和移动操作?
- 是否有标准算法要复制直到
- 将内存复制到标准::复制
- 移动分配与标准复制和交换不兼容
- 标准::复制二维数组
- C++,标准::复制和模板