设为首页收藏本站

融智技术学院

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 441|回复: 0

IT百科——联合类型(Union type)

[复制链接]
MrLi 发表于 2014-4-6 16:00:14 | 显示全部楼层 |阅读模式
联合类型(Union type)

在计算机科学里,一个联合是一个值,这个值也许有许多表现或者格式中的任何一个。或者,它是一个数据结构,由变量组成,变量就保存了这样的值。一些编程语言支持这种数据类型,被叫做联合类型,来描述这样的值或者变量。换句话说,一个联合类型的定义将指定大量被允许的原始类型的哪一个可以被保存在它的实例中,例如,“float或者long integer”。与一个记录(或者结构)相比,它可以被定义去包含一个float和integer。在一个联合里,在任何时间这里只有一个值。
一个联合可以被想象为一个内存块,它被用来存储不同数据类型的变量。一旦一个新的值被分配到一个域,现存的数据将被新的数据覆盖。内存区域存储的值没有固有的类型(除了内存中的bytes或者words),但是值可以被作为许多抽象数据类型中的一个对待,有值的类型,这个被最后写入到内存区域中的值。
在类型理论里,一个联合有一个总和类型。
依赖于语言和类型,一个联合值可以被用于许多操作里,例如赋值和等式的比较,不必知道它特定的类型。其它的操作也许要求特定的类型,也可以通过一个额外的信息,或者一个被标记的联合的使用。
由于它们使用上的限制,为被标记的联合普遍只在无类型语言或者以一个类型不安全的方式中被提供(例如在C语言中)。它们有超过简单标记联合的优势,就是不要求空间去保存一个数据类型标记。
“union”的名字源于类型的正规定义。如果一个类型被认为作为所有值的集合,这个类型可以承担的,一个联合类型是简单的它的组成类型的数学上的联合,因为它可以承受任意它的域可以承受的任意值。而且,因为一个数学上的联合丢弃了重复,如果联合中不止一个域可以承受一个单独的通用的值,只从值得知哪一个域被最后写入成为可能。
然而,联合的一个有用的编程功能是为了更简单的操作,映射较小的数据元素到较大的数据元素。一个数据结构的组成,例如,4bytes和一个32位的整型,可以形成一个联合,一个有无符号64位整型的联合,因此为了比较的目的而更容易访问了,等等。
像一个结构,一个联合的所有成员默认是公有的。关键字private,public和protected也被用于一个结构或者一个联合的内部,方式恰好相同,与它们被用在一个类里来定义private,public和protected成员访问。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

新突破电商

小黑屋|手机版|Archiver|融智技术学院 ( 京ICP备09018999号  

GMT+8, 2018-4-19 17:53

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表