Union declaration

来自cppreference.com
< cpp‎ | language

 
 
C++语言
表达式
替代表示
字面量
布尔型 - 整型 - 浮点型
字符型 - 字符串 - nullptr (C++11)
用户定义 (C++11)
Utilities
属性 (C++11)
Types
typedef声明
类型别名声明 (C++11)
Casts
隐式类型转换 - 显示类型转换
static_cast - dynamic_cast
const_cast - reinterpret_cast
内存分配
类特有的函数属性
静态成员函数
模板
杂项
 
工会是一类特殊类型的存储的所有数据成员在相同的内存位置.
原文:
A union is a special class type that stores all of its data members in the same memory location.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
工会不能有虚函数,继承或继承其他类.
原文:
Unions cannot have virtual functions, be inherited or inherit other classes.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
(C++11前),工会只能包含POD(普通的旧数据)类型.
原文:
(C++11前) Unions can only contain POD(普通的旧数据) types.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
(C++11起)如果一个union中包含一个非POD的成员,其中有一个用户定义的特殊功能,该功能是默认情况下,在工会中删除,并需要明确定义的用户(构造函数,析构函数,拷贝构造函数或复制赋值).
原文:
(C++11起) If a union contains a non-POD member, which has a user-defined special function (constructor, destructor, copy constructor or copy assignment) that function is deleted by default in the union and needs to be defined explicitly by the user.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

目录

[编辑] 语法

union name { member_declarations } object_list (可选) ; (1)
union { member_declarations } ; (2)

[编辑] 解释

#命名的工会
原文:
#Named union
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
#无名氏工会
原文:
#Anonymous union
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 匿名工会

一个匿名的工会成员从封闭的范围作为单一变量.
原文:
Members of an anonymous union are accessible from the enclosing scope as single variables.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
匿名工会有进一步的限制:他们必须有唯一的公共成员,不能有成员函数.
原文:
Anonymous unions have further restrictions: they must have only public members and cannot have member functions.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
命名空间的匿名工会必须是静态的.....
原文:
Namespace-scope anonymous unions must be static.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 示例

union foo
{
  int x;
  signed char y;
};
 
int main()
{
  foo.x = 128 + 896;
  std::cout << "as int: "  << (int)foo.x << '\n';
  std::cout << "as char: " << (int)foo.y << '\n';
  return 0;
}

输出:

as int: 1024
as char: 128
(little-endian处理器)
原文:
(for little-endian processors)
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里