union --联合体
特点:共享内存,长度由最大字节类型决定
例如:
union data
{
short sHP;
int iHP;
double fHP;
};
data在64位操作系统下就是8字节,由最长double决定
data user;
std::cout << sizeof(data) << std::endl;
结果为8是显然的
然后看一下各个成员的内存
std::cout << &user.iHP << std::endl;
std::cout << &user.fHP << std::endl;
std::cout << &user.sHP << std::endl;
结果如下:
结论:他们共享一8字节内存
union 之匿名
c++17标准中,匿名也已不是问题,与结构体的匿名类似,例如下:
union
{
short sHP;
int iHP;
double fHP;
}ls;
适用情形:只需临时使用一次的联合体,使用案例
struct data
{
int ia;
union
{
short sHP;
int iHP;
double fHP;
}ls;
double db;
};