C++中的union(联合)类
参考资料:C++primer第5版P749,CprimerPlus第6版P405
-
成员访问权限默认为public,可以自行指定private,protected(但是union类不能出现在继承体系中)
-
可以声明多个成员,但只能存放一个成员在内存中,一次只存储一个值
-
不能包含引用类型成员
-
union被分配的内存最大值是其包含成员的内存最大值
-
赋值后清除原来的数据,一次只存储一个值
含有类类型的union
因为union为每个数据成员都生成默认的函数,遇到自定义默认函数的类成员时,union生成的默认函数被定义为删除的,所以只能自定义union的默认函数,
但是又因为只能存储一个值,这样就不知道union的现有数据类型,所以要在外套一个类,提供状态的变量union的判别式匿名联合类
-
定义即声明
-
声明一个未命名的union变量,其成员都是public,在定义所在的作用域可以直接使用
个人理解全是默认合成的函数且只包含内置类型成员数据的类相当于内置类型