最近在学习C++进阶的内容,发现了C++一种特殊的类叫联合体。我是在github上的一个项目上学习的,个人觉得这个项目挺不错的链接
特点
1.与结构体不同,联合体所有变量公用一块内存空间,联合体的内存长度是由变量中内存长度最长的变量所决定的。
union MyUnion
{
struct MyStruct
{
int x;
int y;
int j;
}u;
int k;
};
MyUnion a;
a.u.x = 1;
a.u.y = 2;
a.u.j = 3;
a.k = 4;//覆盖掉第一个int空间的值
cout << "a.u.x=" << a.u.x << "a.u.y=" << a.u.y << "a.u.j=" << a.u.j << "a.k=" << a.k << endl;//联合体练习
最后输出a.u.x=4 a.u.y=2 a.u.j=3 a.k=4
可以看出,此联合体长度即为结构体的长度。联合体中,结构体和整型变量k公用一块内存,所以给a.k赋值时会改变结构体中x的值。
2.可含构造函数和析构函数
3.不能含有引用
4.不能继承或作为基类
5.不能有虚函数