聯合

  1. 介紹聯合型別的定義。

    // Example is from POSIX
    union sigval {
        int     sival_int;
        void   *sival_ptr;
    };
    
  2. 引入*詳細的型別說明符,*它指定以下名稱是聯合型別的名稱。如果已經宣告瞭聯合名稱,即使被其他名稱隱藏也可以找到它。如果聯合名稱尚未宣告,則為前向宣告。

    union foo; // elaborated type specifier -> forward declaration
    class bar {
      public:
        bar(foo& f);
    };
    void baz();
    union baz; // another elaborated type specifer; another forward declaration
               // note: the class has the same name as the function void baz()
    union foo {
        long l;
        union baz* b; // elaborated type specifier refers to the class,
                      // not the function of the same name
    };