c++ union基本用法

本文详细介绍了C++中union的数据结构特性,包括它如何节省空间,只能有一个数据成员有值,不能包含引用类型,以及不能有虚函数、继承和其他类。同时,展示了union的定义与使用示例,以及匿名union的概念,它允许直接访问其成员,但不支持保护或私有成员。理解union对于深入理解C++内存管理和数据存储至关重要。
摘要由CSDN通过智能技术生成

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值