1 #include<iostream>
2 using namespace std;
3 class someClass{
4 int num;
5 public:
6 void show(){
7 cout<<num<<endl;
8 }
9 };
10 union A{
11 char c;
12 int i;
13 double d;
14 someClass s;
15 };
16 union B{
17 char c;
18 int i;
19 double d;
20 B(){
21 d = 8.9;
22 }
23 };
24 union{
25 char c;
26 int i;
27 double d;
28 void show(){
29 cout<<c<<endl;
30 }
31 }u={'U'};
32
33 int main(){
34 A a = {'A'};
35 B b ;
36
37 cout<<a.c<<endl; //输出A
38 cout<<b.d<<endl;//输出8.9
39 a.s.show();//输出65,就是A
40 u.show();//输出U
41
42 union{ //匿名联合
43 int p;
44 int q;
45 };
46 p = 3;
47 cout<<q<<endl;//输出3
48 }
49 1、union可以指定成员的访问权限,默认情况是public
50 2、union也可以定义成员函数,包括构造函数和析构函数,但是,它不能作为基类使用,成员函数不能为虚函数。
51 3、union允许其他类的对象成为它的数据成员,但是要求该对象的所属类不能定义构造函数、析构函数或者赋值操作符函数。
52 4、匿名联合并不是一种数据类型、因为它不用来定义变量,它只是指明若干个变量共享一片存储单元。