c++ union基本用法

union是一种节省空间的类

特点

  1. 可含有多个数据,但是任意时刻只有一个数据成员可以有值
  2. 不能含有引用类型的成员
  3. 成员类型可以包含构造函数或析构函数的类类型
  4. 默认成员为公有,和struct相同
  5. 可以指定publi、protected和private等标记
  6. 不能含有虚函数,不能继承其他类,不能作为基类

定义 及 使用

union Token
{
	//以下均为public成员
	char cval;
	int ival;
	double dval;
}

默认情况下union是未初始化的

Token first_token = {'a'}; //初始化cval成员
Token last_token;  //未初始化的Token对象
Token *pt = new Token; //指向一个未初始化的Token
对象的指针

last_token.cval = 'z';
pt->ival = 42;

union的一个数据成员的赋值会令其他数据成员变为未定义状态。

匿名union

编译过程中自动创建一个未命名对象,在匿名union的定义所在的作用域内该union的成员都可以直接被访问。即不能包含protect、private成员,也不能定义成员函数。

union {   //匿名union
	char cval;
	int ival;
	double dval;
};
cval = 'c';
ival = 42;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值