2020-C++高级程序设计-C++ Union
Union
- 共享存储空间(三选一!)
1 | |
1. 统一数据空间用两种操作方式进行操作
- 常用于系统软件和嵌入式系统
- 例子(将数组组合成矩阵)
1 | |

2. Union的另一种用法
- 例:定义数组, 存储100个图形(直线、矩形、圆)
1 | |
- Union占据的空间:
- 选中最大的空间进行共享
- 注意最右边的t,这方便了我们的访问

1 | |
- 如果要增加color和width
1 | |

- C++不希望在运行时进行类型检查
- 所有C++利用virtual func来进行实现
3. 互斥赋值
- 在任何时刻,联合中只能有一个数据成员可以有值。当给联合中某个成员赋值之后,该联合中的其他成员就会变成为赋值状态
4. 结构和联合
- 通过使用union完成和保证c++运行时的多态性
5. 参考
2020-C++高级程序设计-C++ Union
https://spricoder.github.io/2020/07/01/2020-C-plus-plus-advanced-programming/C++-%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/2020-C-plus-plus-advanced-programming-C++%20Union/