一、联合(union)概述

  • 联合(union)是一种特殊的类

  • 一个union可以有多个数据成员,但是在任意时刻只有一个数据成员可以有值。当我们给union的某个成员赋值之后,该union的其它成员就变成未定义的状态了。分配给一个union对象的存储空间至少要能容纳它的最大的数据成员

  • 类的某些特性对union同样适用,但并非所有特性都如此:

    • union不能含有引用类型的成员,union的成员可以是绝大多数类型。在C++11标准中,含有构造函数或析构函数的类类型也可以作为union的成员类型

    • union可以为其成员指定public、protected、private等标记。默认情况下union的成员都是公有的

    • union可以定义包括构造函数和析构函数在内的成员函数。但是由于union既不能继承自其它类,也不能作为基类使用,所以在union中不能含有虚函数

二、定义union

  • union提供了一种有效的途径使得我们可以方便地表示一组类型不同的互斥值

  • 例如我们需要处理一些不同类型的数字数据和字符数据,则在此过程中可以定义一个union来保存这些值:

//Token类型的对象只有一个成员,该成员的类型可能是下列类型中的任意一种union Token {char cval;int ival;double dval;};

三、使用union类型

C++:34---union:联合/共用体,一种节省空间的类相关推荐

  1. C++中的位域(bit-filed):一种节省空间的成员

    有一种被称为位域(bit-field) 的特殊的类数据成员,它可以被声明用来存放特定数目的位.位域必须是有序数据类型.它可以有符号也可以无符号.例如: class File { //  unsigne ...

  2. c语言联合有什么作用,C语言union共用体(联合体)基础知识及实际用途

    union我想应该不是为了省内存而创建的吧!能省多少内存呢? 我猜测是:一个空间可以同时使用多种类型,而不必在意数据类型,因为我们可以通过里面的数值判断数据类型.(可参考动态语言Lua/Python) ...

  3. 联合(联合体,共用体)详解

    联合是C语言中的另一种高级数据结构,在编写程序过程中合理的使用共用体,可以节省内存空间,还可以简化多种复杂数据的处理!! 关键字:union 联合也是一种特殊的自定义类型!这种类型定义的变量也包含一系 ...

  4. C复合结构——共用体union

    文章目录: 一:概念 二: 定义共用体类型变量的一般形式 三: 共用体和结构体的比较 四: 共用体变量的引用方式 C语言--共用体 变量是一个一个定义的 数组是一组具有相同类型的变量的集合 struc ...

  5. C语言:关键字---union(声明共用体类型)

    C语言32个关键字 有32个关键字详细说明,还有跳转链接! 一.union 简介 union 是C语言中一种声明共用体的数据类型. union(共用体)在某种程度上类似struct(结构体)的一种数据 ...

  6. 重温C语言十四-----结构体与共用体

    文章目录 结构体和共用体 1.基本介绍 -1,需求: 2.走向结构体 -1.结构体关系图 -2,面向对象的方式(struct)解决养猫的问题 -3.结构体和结构体变量的区别与联系 -4,结构体在内存中 ...

  7. 结构体与共用体(联合体)

    参考:结构体与共用体 作者:一只青木呀 发布时间: 2020-08-09 08:29:22 网址:https://blog.csdn.net/weixin_45309916/article/detai ...

  8. 第九章、结构体与共用体

    文章目录 9.1 结构体变量定义.引用.初始化 9.1.1 结构体概述 9.1.2 定义结构体类型变量的方法 9.1.3 结构体类型变量的引用 9.1.4 结构体变量的初始化 9.2 结构体数组.结构 ...

  9. 关于共用体所占的内存空间的问题

    共用体 `共用体(联合)` 共用体类型变量的定义 共用体变量的引用方式 共用体类型数据的特点 [例1]分析程序运行结果 [实训内容3]输入并运行以下程序,从输出的结果体会"共用"的 ...

最新文章

  1. 《团队项目开发之三对一维环形数组的求解》
  2. JSP错误页面的处理和exception对象
  3. 每天多一点(2016.12.04)》Javascript隐式转换
  4. Linux0.11内核--系统中断处理程序int 0x80实现原理
  5. 下载ueditor-1.1.3.jar源码和源代码
  6. 演练 动态数组存储学生对象 并且实现遍历 0119
  7. [转载]网络编辑必知常识:什么是PV、UV和PR值 zz
  8. k 近邻算法解决字体反爬手段|效果非常好
  9. php更改tittle,phpcms V9修改默认title标签
  10. ELK 架构之 Elasticsearch 和 Kibana 安装配置
  11. openwrt搭建环境
  12. Charles 4.2 HTTPS抓包,乱码设置,证书信任,证书安装
  13. Windows 上C++ new/detele如何知道内存大小
  14. 60个Vue常见问题汇总及解决方案
  15. JAVA 打印姓名、性别、年龄、住址
  16. 06年底写的5年职业规划与珠海金山邮件面试题回复
  17. 面试官:什么是 Reactor 和 Proactor?
  18. 页面生命周期:DOMContentLoaded, load, beforeunload, unload解析
  19. js中在另一个页面打开ppt、word
  20. win10开启键盘灯的步骤

热门文章

  1. CosiWorksNew
  2. ASP+COM技术在嵌入式Webserver中的应用
  3. WinCE EBOOT中的BootPart分析
  4. Linux编程练习 --多线程2--属性的设置
  5. mysql client 未开启_Django+mysqlclient未关闭数据库连接
  6. python的river安装
  7. 涵盖各种编程语言的深度学习库整理大全!
  8. 【转】xilinx usb下载器 速度高速极限设置 JTAG-SMT2 JTAG-HS2 JTAG-HS3和Platform Cable USB DLC9 DLC10速度测试
  9. 【转】【MySQL】事务与锁(四):行锁到底锁住的是什么?记录?字段?索引?
  10. Sharepoint学习笔记—架构系列