复杂类型
除了类之外还有Union、Enum连个特殊的类型。
Union
概念
union即为联合,它是一种特殊的类。通过关键字union进行定义,一个union可以有多个数据成员。
1 2 3 4 5
| union Token{ char cval; int ival; double dval; };
|
用法
- 互斥赋值。在任意时刻,联合中只能有一个数据成员可以有值。当给联合中某个成员赋值之后,该联合中的其它成员就变成未定义状态了。
1 2 3 4 5 6 7 8
| Token token; token.cval = 'a'; token.ival = 1; token.dval = 2.5;
|
- 访问权限。联合可以为其成员指定public、protected和private等访问权限,默认情况下,其成员的访问权限为public。
- 为成员指定长度。联合的存储空间至少能够容纳其最大的数据成员。也可以为联合的成员指定长度。通过冒号操作符来实现成员长度的指定。
1 2 3 4 5 6 7 8
| union U { unsigned short int aa; struct { unsigned int bb : 7; unsigned int cc : 6; unsigned int dd : 3; }; } u;
|
Enum
定义
- 枚举类型的定义:枚举类型(enumeration)是 C++ 中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。枚举类型的定义格式为:
- 关键字enum——指明其后的标识符是一个枚举类型的名字。
- 枚举常量表——由枚举常量构成。”枚举常量”或称”枚举成员”,是以标识符形式表示的整型量,表示枚举类型的取值。枚举常量表列出枚举类型的所有取值,各枚举常量之间以”,”间隔,且必须各不相同。取值类型与条件表达式相同。
用法
- 用来声明一个两所有可能的取值。使用标识符表示其种类。
应用举例
1 2
| enum color_set1 {RED, BLUE, WHITE, BLACK}; // 定义枚举类型color_set1 enum week {Sun, Mon, Tue, Wed, Thu, Fri, Sat}; // 定义枚举类型week
|