枚举、联合
枚举enum、联合union成员共用一个变量缓冲区
enum是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型
有些变量的取值被限定在一个有限的范围内
枚举值是常量不是变量,不能再对它赋值
0,1,2,3,4 …
enum weekday{sun,mon,tue,wed,thu,fri,sat};
weekday a, b;
或
enum weekday{sun,mon,tue,wed,thu,fri,sat}a,b;
或
enum {sun,mon,tue,wed,thu,fri,sat}a,b;
只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如一定要把数值赋予枚举变量,则必须用强制类型转换。
a=(enum weekday)2; a = (weekday)2;
即 a=tue;
inline week operator++( week &rs, int ) { //重载后++ a++时还需判断是否超出范围
week oldWeek = rs;
rs = (week)(rs + 1);
return oldWeek;
}
union 所有成员共用一个空间,并且同一时间只能储存其中一个成员变量的值
union foo
{
int I;
char c;
double k;
}
union foo bar; 8个字节
{char s[10]; int a; } 10、 4 所以占12个字节
union的成员不可以为静态、引用,如果是自定型态的话,该自订型态成员不可以有建构函式、解构函式或是复制指定运算子。
对一个成员赋值,其他成员的值就不存在了。