提问者:小点点

微不足道的可复制vs微不足道的vs标准布局vs pod


我想更多地了解这些类型。

而不是罗列一个类型的要求是微不足道,标准布局等等,我还想知道什么是微不足道,标准布局等等,根据我的理解(可能是绝对错误的),如下:

简单可复制-可以安全地用std::memcpy复制。 如果您将数据记忆回一个对象,它将与原始对象相同。

Trivial-可简单复制,并且有一个或多个默认构造函数,所有这些构造函数要么是Trivial的,要么是删除的,并且至少有一个未删除(必须是Trivial的)。 这意味着它是可复制的,如果我们进行默认初始化(在编译时初始化,因为编译器知道默认构造函数是如何工作的),它是静态初始化的

标准布局-布局(在内存中表示的数据成员的顺序,对齐方式以及所采用的内存/填充大小)与C语言中的相同

吊舱--简单而标准的布局。 此类型与C完全兼容。

请纠正任何误解我有,并提供参考,如果可能的话。

还有,什么时候我们想要创建的对象是琐碎的,琐碎的可复制的,标准的布局,pod? 如能举例,将不胜感激。


共1个答案

匿名用户

什么叫琐碎,标准布局等等。

作为一个微不足道的类型意味着适用于微不足道类型的语言规则也将适用于它。 其他特殊类别的类型也是如此。 例如,正如您所提到的,只有简单的可复制类型可以用memcpy复制。

还有,什么时候我们想要创建的对象是琐碎的,琐碎的可复制的,标准的布局,pod?

您提到POD与C兼容,因此,当您希望跨越语言障碍进行交互时,您希望使用与两种语言都兼容的类型。

在某些情况下,复制和比较琐碎类型可能比对非琐碎类型的相同操作更有效。 因此,在微不足道的类型提供显著改进的情况下,它们可能是优选的。