类型别名

前面说过的结构、联合、枚举等类型,都是在定义时声明相关变量,这样使用起来相当不便。C++提供了给类型声明别名的功能,来方便对复杂类型的使用和对有特定目的类型的标记。

类型别名使用typedef关键字声明,格式为typedef 原类型 类型别名。例如前面的枚举类型就可以先声明类型别名,再使用类型别名声明变量。

typedef enum {
    red,
    green,
    blue
} Color;

Color myColors;

上例中,类型别名Color就可以像一个真正的类型那样来使用了。除了可以为复杂类型声明类型别名,内置类型也可以声明类型别名。

typedef int Amount;
Amount purchase;

类型别名Amount作为内置类型int的别名声明了一个变量purchase,虽然看起来purchase的类型是Amount,但是从编译器的角度看,它的类型还是int。这种使用方法通常是在代码中为变量命名一个具有独特意义的类型。

Caution

类型别名的存在降低了C++程序的可读性,在阅读C++源码时,一定要对所有的类型别名定义格外留心。

此外,C++中目前结构、联合和枚举类型已经不需要使用typedef来声明类型别名了,可以直接使用类型声明的名称声明变量。