gpt4 book ai didi

c++ - 什么时候允许对 c++11 中的类型进行 memcpyed?

转载 作者:IT老高 更新时间:2023-10-28 23:27:44 26 4
gpt4 key购买 nike

我的问题如下:

如果我想复制一个类类型,memcpy 可以很快完成。这在某些情况下是允许的。

我们有一些类型特征:

  • is_standard_layout。
  • is_trivially_copyable。

我想知道的是当类型“可按位复制”时的确切要求。

我的结论是,如果 is_trivally_copyableis_standard_layout 特征都为真,则类型是可按位复制的:

  1. 这正是我需要按位复制的吗?
  2. 是否过度约束?
  3. 是否受到约束?

P.S.:当然,memcpy 的结果一定是正确的。我知道我可以在任何情况下进行 memcpy,但不正确。

最佳答案

您可以使用 memcpy 复制 T 类型的对象。当is_trivially_copyable<T>::value是真的。没有特别需要该类型是标准布局类型。 “可简单复制”的定义本质上是这样做是安全的。

使用 memcpy 可以安全复制的类示例但这不是标准布局:

struct T {
int i;
private:
int j;
};

因为这个类对不同的非静态数据成员使用不同的访问控制,所以它不是标准布局,但它仍然可以很容易地复制。

关于c++ - 什么时候允许对 c++11 中的类型进行 memcpyed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27009178/

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