Udostępnij za pośrednictwem


Związki

A Unii jest zdefiniowany przez użytkownika danych klasy typu lub zawierający, w danej chwili tylko jeden obiekt ze swojej listy członków (chociaż ten obiekt może być tablicą lub typu klasy).

union [tag] { member-list } [declarators];
[union] tag declarators;

Parametry

  • tag
    Nazwa typu, biorąc pod uwagę do Unii.

  • member-list
    Lista typów danych Unii może zawierać.Zobacz uwagi.

  • declarators
    Określanie nazw Unii listy; niewłaściwy deklarator.Zobacz Omówienie Declarators Aby uzyskać więcej informacji.

Uwagi

Lista elementów członkowskich Unii reprezentuje typy danych może zawierać Unii.Unia wymaga wystarczającą ilość pamięci, aby pomieścić największą elementu członkowskiego w jego Lista elementów członkowskich.Aby uzyskać więcej informacji, odnoszą się do Deklaracje Unii (Skorowidz języka C).

Deklarowanie Unii

Rozpocząć deklaracji Unii za pomocą słowa kluczowego Unii i ująć listy elementów członkowskich w nawiasy klamrowe:

// declaring_a_union.cpp
union DATATYPE    // Declare union type
{
    char   ch;
    int    i;
    long   l;
    float  f;
    double d;
} var1;          // Optional declaration of union variable

int main()
{
}

Za pomocą Unii

Unia C++ jest ograniczona formularza tego typu klasy.Może on zawierać specyfikatory dostępu (public, chronione, prywatne), danych i funkcji elementów członkowskich, w tym konstruktory i destruktory.Nie może zawierać funkcje wirtualnych lub członków dane statyczne.Nie mogą być używane jako klasa podstawowa, ani nie może mieć klas podstawowych.Dostęp domyślny członków w Unii jest publiczna.

C typu Unii mogą zawierać tylko danych członków.

C, należy użyć Unii słowo kluczowe, aby zadeklarować zmienną Unii.W języku C++ Unii niepotrzebne jest słowo kluczowe:

union DATATYPE var2;   // C declaration of a union variable
DATATYPE var3;         // C++ declaration of a union variable

Zmienna typu Unii może pomieścić jedną wartość dowolny typ zadeklarowany w Unii.Użyj operatora wybranych elementów członkowskich (.) uzyskać dostępu do członka Unii:

var1.i = 6;           // Use variable as integer
var2.d = 5.327;       // Use variable as double 

Można zadeklarować i zainicjować Unii w tej samej instrukcji, przypisując wyrażenie ujęte w nawiasy klamrowe.Wyrażenie jest oceniane i przypisany do pierwszego pola Unii.

Przykład

// using_a_union.cpp
#include <stdio.h>

union NumericType
{
    int         iValue;
    long        lValue;  
    double      dValue;  
};

int main()
{
    union NumericType Values = { 10 };   // iValue = 10
    printf_s("%d\n", Values.iValue);
    Values.dValue = 3.1416;
    printf_s("%f\n", Values.dValue);
}

Dane wyjściowe

10
3.141600

NumericType Unii są rozmieszczone w pamięci (koncepcyjnie) jak pokazano na poniższym rysunku.

Przechowywanie danych w Unii NumericType

Magazyn danych związku typów numerycznych

Zobacz też

Informacje

Klasy, struktury i związki

Słów kluczowych języka C++

Związki anonimowe

Klasa (C++)

struct (C++)