下面是匿名联合的形式:
union //没有名字
{
//…member
};//没有实例
匿名联合主要用来节约空间。例如:当你或者用ID,或者用关键字来确认雇员的身份,但是并不是同时使用上面两者时。一个同时含有ID和关键字的匿名联合就能够保证:在任何时刻,只有其中一项能够被使用。这是因为联合的成员数据储存在同一段地址上,相互覆盖。
union
{
int ID;
char* name;
};
ID = 1234;
retrieve_emp(ID, employee);
注意,你可以直接访问成员数据,就好像它们在联合外面声明的一样。
匿名联合的另一个用途是:自动类型转换(自动类型转换是不安全的)。例如:当要把一个指针看作十进制数时,你可以如下面的联合一样声明。
int some_val;
union
{
void *p;
int n;
};
p = &some_val;
现在没有必要把指针显式的转为int类型的:
str::cout << ”address of p is:” << n << std::endl;