当前位置: 首页 > news >正文

c++ 联合(Union)的特性和使用

联合(Union)是一种特殊的数据结构,允许在同一内存位置存储不同的数据类型。一个 union 可以有多个数据成员,但是在任意时刻只有一个数据成员可以有值。当某个成员被赋值后其他成员变为未定义状态。以下是联合的主要特点和使用方式:

  • 默认访问控制符:成员默认为 public
  • 构造函数和析构函数:可以有构造函数和析构函数。
  • 引用类型成员:不能包含引用类型的成员。
  • 继承和虚函数:不能作为基类,也不能含有虚函数。
  • 匿名联合:在定义所在作用域可直接访问联合成员,但不能包含 protected 或 private 成员。
  • 全局匿名联合:必须声明为静态(static)。

代码示例:

#include <iostream>// 定义具有默认构造函数的联合
union UnionTest {UnionTest() : i(10) {}  // 构造函数初始化 i 成员为 10int i;double d;
};// 全局静态匿名联合
static union {int i;double d;
};int main() {UnionTest u;  // 创建 UnionTest 的实例 uunion {int i;double d;};  // 局部匿名联合std::cout << u.i << std::endl;  // 输出 UnionTest 联合的成员 i,值为 10::i = 20;  // 访问全局静态匿名联合的成员 istd::cout << ::i << std::endl;  // 输出全局静态匿名联合的成员 i,值为 20i = 30;  // 访问局部匿名联合的成员 istd::cout << i << std::endl;  // 输出局部匿名联合的成员 i,值为 30return 0;
}
http://www.lryc.cn/news/391604.html

相关文章:

  • 大白菜U盘启动工具
  • C# 中 IEnumerable 和 IQueryable 接口之间的区别
  • centos安装yum命令及常用yum命令
  • table = collections.defaultdict(list)申请的字典的类型是什么?
  • 【虚拟机】虚拟机网络无法访问问题【已解决】
  • 大数据面试题之Spark(3)
  • 基于 Gunicorn + Flask + Docker 的模型高并发部署
  • CPU通过网络将IP camera的RTSP流(H.264编码或是H.265编码)拉回, 交给GPU解码并显示的处理流程
  • windows@资源管理器中的地址栏@访问共享文件夹的各种方法@管理共享文件夹
  • ffmpeg推流时Unknown encoder ‘libx264‘
  • xmind导入导出支持图片功能源码改造
  • Web应用防火墙用在哪些场景?
  • MySQL高可用(MHA高可用)
  • k8s_如何配置 containerd 使用镜像加速拉取docker.io上的镜像
  • centos7安装宝塔面板
  • Spring 事务管理:全面解析
  • 概率论与数理统计_上_科学出版社
  • 昇思25天学习打卡营第11天|LSTM+CRF序列标注
  • CSS 核心知识点 - grid
  • pyecharts可视化案例大全(1~10)
  • SpringBoot 启动流程一
  • 打印机删除副本以后无法安装打印机驱动
  • Vue3中为Ant Design Vue中Modal.confirm自定义内容
  • 智能猫砂盆到底哪家好用?自费实测聚宠、糯雪、CEWEY真实反馈!
  • 初阶数据结构之二叉树
  • 代码随想三刷动态规划篇8
  • ​​服务拆分的原则
  • 离线安装docker社区版
  • 徒手绘制 Android 通用进度条
  • 【TB作品】矩阵键盘电话拨号,ATMEGA16单片机,Proteus仿真 atmega16矩阵键盘电话拨号