一、联合(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;};