POD (程序设计)

✍ dations ◷ 2025-11-08 12:45:01 #C++,数据类型

Plain old data structure, 缩写为POD, 是C++语言的标准中定义的一类数据结构,POD适用于需要明确的数据底层操作的系统中。POD通常被用在系统的边界处,即指不同系统之间只能以底层数据的形式进行交互,系统的高层逻辑不能互相兼容。比如当对象的字段值是从外部数据中构建时,系统还没有办法对对象进行语义检查和解释,这时就适用POD来存储数据。

POD类型包括下述C++类型,以及其cv-qualified的类型,还有以其为基类型的数组类型:

术语标量类型包括下述C++类型范畴, 以及其cv-qualified类型:

术语算术类型包括下述C++类型范畴:

术语整数类型包括下述C++类型范畴:

术语浮点类型包括C++的float, double, and long double类型.

术语枚举类型包括各种枚举类型,即命名的常量值(named constant values)的集合.

术语指针类型包括下述C++类型范畴:

术语指针到成员类型包括下述C++类型范畴:

POD类类型是指聚合类(aggregate classes, 即POD-struct types)与聚合union (POD-union types),且不具有下述成员:

术语聚合是指任何的数组或者类,且不具有下述特征:

可见,POD类类型就是指class、struct、union,且不具有用户定义的构造函数、析构函数、拷贝算子、赋值算子;不具有继承关系,因此没有基类;不具有虚函数,所以就没有虚表;非静态数据成员没有私有或保护属性的、没有引用类型的、没有非POD类类型的(即嵌套类都必须是POD)、没有指针到成员类型的(因为这个类型内含了this指针)。

C++11把情况推广为两种:

类型是平凡的(trivial),则可以静态初始化、可以用memcpy直接复制数据而不是必须用copy构造函数。其生存期始于它的对象的存储被定义,无须等到构造函数完成。平凡class或结构必须满足:

构造函数是平凡的,仅当类没有虚成员函数也没有虚基类。Copy/move运算符是平凡的,仅当没有静态数据成员。

类型是标准布局的(standard-layout)意味着它是有序的并且安排其成员兼容于C语言。这要求满足:

一个class/struct/union是POD,当它是平凡的、标准布局的,所有数据成员是POD.

分为两个概念,对象可以不满足其中一个但是满足另外一个。例如,类有复杂的move与copy构造函数,因此不是平凡的,但可能是标准布局因此能与C程序互操作。类似地,一个类的有public与private的非静态数据成员,因此不是标准布局,但可以是平凡的因此可以memcpy操作。

POD类型在源代码兼容于ANSI C时非常重要。POD对象与C语言的对应对象具有共同的一些特性,包括初始化、复制、内存布局、寻址。

一个例子是下述C++的new表达式中的对象初始化,POD与non-POD的区别:

因此,non-POD类型的对象或数组总是被初始化;而POD类型的对象或数组可能未被初始化.

其它与POD相关的C++特性:

"POD-struct ... types are layout-compatible if they have the same number of members, and corresponding members (in order) have layout-compatible types".

POD-union ... types are layout-compatible if they have the same number of members, and corresponding members (in any order) have layout-compatible types".

JAVA中,一些开发者认为POD类型是符合没有public成员且没有方法的类,比如data transfer object。其实不使用事件句柄并且不实现除getter和setter之外的附加方法的POJO(只含有getter和setter的类)和JAVA Bean也属于POD。但不管怎么样,POJO和JAVA Bean已经有了封装,已经违反了POD的定义了。

Visual C++名字修饰

相关

  • 水污染控制水污染控制是控制向水体排放污染物的方法,水污染主要有点污染源和面污染源,点污染源有具体的污染源,如工厂的排污管道口,比较容易治理,只要控制污染物排放政策有足够的执法能力,每
  • 微丝血管微血管(capillary)又称为毛细血管或微丝血管,连接动脉与静脉,是由动脉分支为较小的动脉,再分支多次的血管。微血管是管壁最薄的血管,只有一层细胞的厚度,利于细胞之间物质的交换。
  • 城市社会学实证主义 · 反实证主义(英语:Antipositivism) 结构主义 · 冲突理论 中层理论 · 形式理论 批判理论人口 · 团体 · 组织(英语:Organizational theory) · 社会化 社会性
  • 高安右人高安 右人(1860年9月4日-1938年11月20日),日本医生。他是大动脉炎(高安病)的发现者。高安右人于1860年9月4日出生于日本肥前国小城郡西多久村(现佐贺县多久市)。1887年毕业于东京帝
  • 吉兰吉兰省(波斯语:گیلان‎)是伊朗三十一个省份之一。面积13,952平方公里,在所有省份中排行第29。人口约2,410,253(2005年数据);首府位于拉什特市。吉兰省位于伊朗西北部;东面与马
  • 世界棒球经典赛世界棒球经典赛(英语:World Baseball Classic;縮寫:WBC)是由美国职棒大联盟和世界棒垒球联盟共同策划的国际棒球大赛(主要仍由大联盟主导),世界各洲皆有球队参赛,首届在2006年3月举行
  • 黑光黑光灯又称紫外线灯或伍德灯(Wood's lamp),是发射长波紫外线(UV-A)和少量可见光的灯,又叫做UV-A 灯, 黑光灯有深紫色的过滤材料,在电灯泡上或者在分开的玻璃过滤器中,用来过滤可见
  • 共轭体系在化学当中,共轭体系是指具有单键-双键交替结构的体系,其中双键的p轨道通过电子离域相互连接,这通常会降低分子的总能量并增加其稳定性。这里的共轭是指由一个σ键相隔的p轨道
  • 伍德塞德石油伍德塞德石油(英语:Woodside Petroleum Limited)是一家澳大利亚石油勘探和生产公司,是澳大利亚最大的独立石油及天然气企业,也是澳大利亚证券交易所的上市企业之一.公司总部位于
  • 补中益气汤补中益气汤,出自李东垣《脾胃论》。东垣立此方以补气升阳,甘温除热,主治气虚发热证,但后世多用于治疗①脾胃气虚证,症见食少倦怠,少气懒言,大便稀溏,舌淡苔白,脉弱。②气虚下陷证,症见