C++中的联合(union)
2013-03-06 11:49
155 查看
联合(union)
联合(union)是一种特殊的类,一个联合中的数据成员在内存中的存储是互相重叠的。每个数据成员都在相同的内存地址开始。分配给联合的存储区数量是要包含它最大的数据成员所需的内存数。同一时刻只有一个成员可以被赋给一个值。
举例:
union Test
{
char cval;
int ival;
char *sval;
double dval;
};
此联合中最大的数据类型是double,所以这个联合的大小是double型对象的大小。
因为联合是一种特殊类,所以union的成员也是通过类成员访问操作符(.和->)访问,union中也可以包含构造函数和析构函数,成员变量和成员函数,也可以声明为public、private、protected。缺省情况下默认为public。总结一下联合的特点:
1. union可以定义自己的函数,包括构造函数和析构函数。
2. union支持public、private、protected权限。
3. union不能被继承,它不能有父类也不能有子类。
4. union中不能定义虚函数。
5. union中不能有静态数据成员和引用数据成员。
6. 如果一个类类型定义了构造函数、析构函数或拷贝赋值操作符,则它不能成员union的成员类型。
7. 不允许对union变量做初始化赋值,只能在程序中赋值。
8. 一个union变量只能赋予一个成员值,换句话说一个union变量的值就是union变量某一成员的值。
匿名联合
一种特殊的联合,匿名union 是没有名字的union,它后面也没有跟着对象定义。仅仅通知编译器它的成员变量共同享一个地址,而变量本身是直接引用的,不使用通常的点号运算符语法。
举例:
union
{
char cVal;
int iVal;
char *sVal;
double dVal;
} test;
上面这个union不是匿名union,因为它后面有对象定义。
匿名union的特点:
1. 匿名union 的数据成员可以在定义匿名union 的域中被直接访问。
2. 匿名union 不能有私有或保护的成员也不能定义成员函数。
3. 在全局域以及namespace中定义的匿名union只能声明为static。
联合(union)是一种特殊的类,一个联合中的数据成员在内存中的存储是互相重叠的。每个数据成员都在相同的内存地址开始。分配给联合的存储区数量是要包含它最大的数据成员所需的内存数。同一时刻只有一个成员可以被赋给一个值。
举例:
union Test
{
char cval;
int ival;
char *sval;
double dval;
};
此联合中最大的数据类型是double,所以这个联合的大小是double型对象的大小。
因为联合是一种特殊类,所以union的成员也是通过类成员访问操作符(.和->)访问,union中也可以包含构造函数和析构函数,成员变量和成员函数,也可以声明为public、private、protected。缺省情况下默认为public。总结一下联合的特点:
1. union可以定义自己的函数,包括构造函数和析构函数。
2. union支持public、private、protected权限。
3. union不能被继承,它不能有父类也不能有子类。
4. union中不能定义虚函数。
5. union中不能有静态数据成员和引用数据成员。
6. 如果一个类类型定义了构造函数、析构函数或拷贝赋值操作符,则它不能成员union的成员类型。
7. 不允许对union变量做初始化赋值,只能在程序中赋值。
8. 一个union变量只能赋予一个成员值,换句话说一个union变量的值就是union变量某一成员的值。
匿名联合
一种特殊的联合,匿名union 是没有名字的union,它后面也没有跟着对象定义。仅仅通知编译器它的成员变量共同享一个地址,而变量本身是直接引用的,不使用通常的点号运算符语法。
举例:
union
{
char cVal;
int iVal;
char *sVal;
double dVal;
} test;
上面这个union不是匿名union,因为它后面有对象定义。
匿名union的特点:
1. 匿名union 的数据成员可以在定义匿名union 的域中被直接访问。
2. 匿名union 不能有私有或保护的成员也不能定义成员函数。
3. 在全局域以及namespace中定义的匿名union只能声明为static。
相关文章推荐
- 如何在C#中模拟C++的联合(Union)?[C#, C++] How To Simulate C++ Union In C#?
- C/C++中的联合 union
- C++ 中联合(union)用法
- C/C++联合(Union)浅谈
- C/C++联合(Union)浅谈
- 第六讲:c/c++复合数据类型struct以及联合类型union,动态内存申请malloc和calloc
- C++中的联合(union)
- 如何在C#中模拟C++的联合(Union)?[C#, C++]
- 【C/C++】C语言中一些容易被人忽略的东西 之三 【共用体、联合、union】
- C/C++中的联合 union
- 如何在C#中模拟C++的联合(Union)?[C#, C++]
- 如何在C#中模拟C++的联合(union)
- C/C++中关于结构(struct)和联合(union)的简单介绍
- C++ 函数重载和union联合使用的威力
- 【C/C++】联合union的用法和说明
- 如何在C#中模拟C++的联合(Union)?[C#, C++] How To Simulate C++ Union In C#?
- C++学习笔记联合/共用体(union)用法
- C/C++中的联合 union
- C/C++中的联合 union
- C++:联合类型(union)