匿名共用体
無名共用体は クラス名 または 宣言リスト を指定しないで宣言された共用体です。
union { member-list }
解説
このような共用体の宣言では型を宣言していません。オブジェクトを宣言します。無名共用体で宣言された名前は同じスコープで宣言されている他の名前と競合することはできません。
15 では無名共用体にタグを指定できます。; これは宣言子を使用することはできません。
無名共用体で宣言された名前はメンバーではない変数のように直接使用されます。
クラスのデータ で示された制限に加えて無名共用体に追加の制限が適用されます :
また 静的 としてファイルのスコープで宣言されている宣言する必要があります。ローカル スコープで宣言されている場合は静的または自動である必要があります。
これらはパブリック メンバーには; できます。無名共用体のプライベート メンバーとプロテクト メンバーはエラーを生成します。
これらはメンバー関数を持たせることはできません。
[!メモ]
構文の クラス名の 部分を省略すると共用体に無名共用体にはなりません。無名共用体として修飾する共用体に対して宣言はオブジェクトを宣言します。
使用例
// anonymous_unions.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main() {
union {
int d;
char *f;
};
d = 4;
cout << d << endl;
f = "inside of union";
cout << f << endl;
}