联合体
union,联合体类型,有的时候也会被叫做共用体。也是一种特殊的类类型,和结构体很相似。
1,联合体所有的成员都共用同一段内存。联合体中的所有成员,只有一个可以是活跃的,其他的都是不可用的。
2,联合体必须以分号结束。
3,联合体不可以用于继承,没有虚函数。成员默认的访问控制方式为公有。
4,在c++11以前,联合体不可以有含有自定义的构造函数,自定义的析构函数或者重载的复制赋值运算符的成员。在c++11以后,联合体可以有这些成员,但是相关的所有函数全都被丢弃,需要自行提供。
联合体的使用
#include <iostream>
#include <string>
using namespace std;
int main()
{
union student
{
// 在联合体中不能使用string类型(c++98)
// 在联合体中不能直接使用string类型,如果要使用需要自行提供string的构造函数(c++11)
// string name;
const char * name;
int age;
double score;
};
student s;
s.name = "孙悟空";
cout << s.name << endl;
s.age = 888;
cout << s.age << endl;
// 不能再输出s.name了
// 在s.age被设置为活跃以后,s.n