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