C++联合枚举和类型别名

联合 union

联合是一种特殊的类一个union联合可有多个数据成员 这些数据成员共同使用同一片存储空间(这样的机制目的是节省内存)

1.分配给一个union对象的存储空间至少要能容纳它的最大数据成员

2.union中不能含有引用类型的成员,默认情况下,union的成员都是公有的,这一点和struct相同

3.union既不能继承自其他类,也不能作为基类使用,所以在union中不能含有虚函数

4.为union的一个数据成员赋值时会令其它数据成员变成未定义的状态


 联合
//可以像创建结构一样创建联合
union keywords
{
   
  unsigned long Birthday;
  unsigned	short ssn;
  const char *pet;
}; 

结构体内变量Birthdayssn*pet共用一块内存的,即&Birthday=&ssn=&pet,且此union联合体所占的内存的长度由联合体中占空间最大的成员决定

所以在keywords这个联合体中,其内存由Birthday决定,所以他们实际存储的值只有一个,即最后赋值的那个,利用union可以用相同的存储空间存储不同型别的数据类型,从而节省内存空间,当访问其内成员时可用.->来直接访问

注意:
const char *pet: 声明了一个指向字符或常量字符串的指针(其中pet所指向的内容不可修改 因为要输入字符串 而char为单字符类型 需要用pet的这个字符串的第一个参数的地址 进行字符串的查找)


联合
keywords key;
key.Birthday = 20000912;// key.Birthday第一次赋值
cout << key.Birthday << endl;//读取正常
key.pet = "wangcai";//key.pet第一次赋值
cout << key
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值