【C++ 重要知识点总结】自定义类型-枚举和联合

复杂类型

除了类之外还有Union、Enum连个特殊的类型。

Union

概念

union即为联合,它是一种特殊的类。通过关键字union进行定义,一个union可以有多个数据成员。

union Token{
   char cval;
   int ival;
   double dval;
};

用法

  1. 互斥赋值。在任意时刻,联合中只能有一个数据成员可以有值。当给联合中某个成员赋值之后,该联合中的其它成员就变成未定义状态了。

Token token;
 
token.cval = 'a';
 
token.ival = 1;
 
token.dval = 2.5;
  1. 访问权限。联合可以为其成员指定public、protected和private等访问权限,默认情况下,其成员的访问权限为public。
  2. 为成员指定长度。联合的存储空间至少能够容纳其最大的数据成员。也可以为联合的成员指定长度。通过冒号操作符来实现成员长度的指定。
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

你可能感兴趣的:(c++,c++,开发语言)