与结构体的区别,只能同时存储其中一种类型
union one { int int_val; long long_val; }pail; pail.int_val = 15; cout << pail.int_val << endl; pail.long_val = 16;//pail.int_val 将会被覆盖,因为共用体同时只能存储其中一中类型 cout << pail.int_val << endl; cout << pail.long_val << endl; //输出结果: 15 16 16共用体可以用来节省空间
struct widget { char brand[20]; int type; union id//商品的条形码或者名字知道一个就可以 { long id_num; char id_char[20]; }id_val; }; //调用共用体成员 widget price; price.id_val.id_num=20;共用体匿名,id_num和id_char视为price 的两个成员,公用一个地址,不需要中间表示符id_val
struct widget { char brand[20]; int type; union //商品的条形码或者名字知道一个就可以 { long id_num; char id_char; }; }; widget price; price.id_num = 20; cout << price.id_num << endl;