無名共用体

無名共用体 は、クラス名が付けられていない共用体です。 その後に、宣言子を続けることはできません。 無名共用体は、型ではありません。つまり、名前なしオブジェクトを定義し、 メンバー関数を持つことはできません。

無名共用体のメンバー名は、共用体が宣言されているスコープ内のほかの名前と区別する必要が あります。メンバー・アクセス構文を追加せずに、共用体スコープ内で、メンバー名を直接使用できます。

例えば、次のコードでは、データ・メンバー i および cptr に直接アクセスできます。 これは、これらのデータ・メンバーが、無名共用体を含むスコープにあるから です。icptr は、共用体メンバーで、同じアドレスが指定されているので、 一度にいずれか一方のみしか使用できません。 メンバー cptr への代入は、メンバー i の値を変更します。

      void f()
      {
      union { int i; char* cptr ; };
      /* . . .  */
      i = 5;
      cptr = "string_in_union"; // overrides the value 5
      }

C++ 無名共用体は、protected メンバーまたは private メンバーを持つことはできません。 グローバルまたはネーム・スペース無名共用体は、キーワード static を使って宣言される必要が あります。

関連参照

IBM Copyright 2003