名前空間
変種
操作

Union declaration

提供: cppreference.com
< cpp‎ | language

 
 
C++言語
一般的なトピック
フロー制御
条件付き実行文
繰り返し文 (ループ)
ジャンプ文
関数
関数宣言
ラムダ関数宣言
inline 指定子
例外指定 (C++20未満)
noexcept 指定子 (C++11)
例外
名前空間
複合型
共用体型
指定子
decltype (C++11)
auto (C++11)
alignas (C++11)
記憶域期間指定子
初期化
代替表現
リテラル
ブーリアン - 整数 - 浮動小数点
文字 - 文字列 - nullptr (C++11)
ユーザ定義 (C++11)
ユーティリティ
属性 (C++11)
typedef 宣言
型エイリアス宣言 (C++11)
キャスト
暗黙の変換 - 明示的な変換
static_cast - dynamic_cast
const_cast - reinterpret_cast
メモリ確保
クラス
クラス固有の関数特性
特別なメンバ関数
テンプレート
その他
 
組合は、同じメモリ位置にそのすべてのデータメンバを格納する特別なクラス型です.
Original:
A union is a special class type that stores all of its data members in the same memory location.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
組合は、仮想関数を持つことができません継承さや他のクラスを継承し.
Original:
Unions cannot have virtual functions, be inherited or inherit other classes.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
(C++11未満)組合はPOD(プレーン古いデータ)タイプのみを含めることができます.
Original:
(C++11未満) Unions can only contain POD(プレーン古いデータ) types.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
(C++11以上)組合は、関数が労働組合では、デフォルトで削除され、ユーザが明示的に定義する必要があることを(コンストラクタ、デストラクタ、コピーコンストラクタまたはコピー代入)ユーザー定義の特別な機能を持つ非PODメンバが含まれている場合.
Original:
(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.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

目次

[編集] 構文

union name { member_declarations } object_list (オプション) ; (1)
union { member_declarations } ; (2)

[編集] 説明

#組合名付けられました
Original:
#Named union
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
#匿名組合
Original:
#Anonymous union
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[編集] 匿名組合

匿名組合のメンバーは、単一の変数として、外側のスコープからアクセスできます。.
Original:
Members of an anonymous union are accessible from the enclosing scope as single variables.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
匿名組合は、さらに制約を持っている:彼らは唯一のパブリックメンバを持っている必要がありますおよびメンバ関数を持つことができません.
Original:
Anonymous unions have further restrictions: they must have only public members and cannot have member functions.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
名前空間スコープ匿名組合は、静的なものでなければならない.
Original:
Namespace-scope anonymous unions must be static.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[編集]

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
(リトルエンディアンプロセッサ用)
Original:
(for little-endian processors)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.