Sdílet prostřednictvím


Sjednocení

A unie je uživatelem definované třídy nebo datový typ obsahující, v daném okamžiku pouze jeden objekt ze seznamu členů (ačkoli je tento objekt může být matice nebo typ třídy).

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

Parametry

  • tag
    Zadejte název unie.

  • member-list
    Seznam typů dat unie může obsahovat.Viz poznámky.

  • declarators
    Declarator seznam zadání názvů unie.Další informace naleznete v tématu Přehled Declarators.

Poznámky

Seznam členů unie představuje druhy unie může obsahovat data.Unie vyžaduje dostatek úložného prostoru pro uložení největší člena v jeho seznam členů.Další informace naleznete v Unie prohlášení (Reference jazyka C).

Deklarování unie

Prohlášení unie unie klíčovým slovem BEGIN a uzavřete seznam členů do složených závorek:

// 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()
{
}

Pomocí unie

Unie C++ je omezené typu třídy.Může obsahovat specifikátory přístupu (public, chráněné, soukromé), člen data a funkce členů včetně konstruktory a destruktory.Nesmí obsahovat funkce virtuální nebo statická data členů.Nelze použít jako základní třída ani může mít základní třídy.Výchozí přístup členů unie je veřejné.

C unie typ může obsahovat pouze datové členy.

C, musíte použít unie klíčové slovo deklarovat proměnnou unie.V jazyce C++ unie je zbytečné klíčové slovo:

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

Proměnná typu unie může obsahovat jednu hodnotu typu deklarován v unii.Použití operátoru výběr členů (.) přístup členem Unie:

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

Můžete deklarovat a unie v stejný příkaz inicializovat přiřazením výraz uzavřený v závorkách.Výraz je vyhodnocen a unie na první pole Přiřazeno.

Příklad

// 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);
}

Výsledek

10
3.141600

NumericType Unie uspořádána v paměti (koncepčně) jak ukazuje následující obrázek.

Úložiště dat v NumericType unie

Úložný prostor číselného typu Union

Viz také

Referenční dokumentace

Třídy, struktury a odbory

Klíčových slov jazyka C++

Anonymní odborů

třídy (C++)

Struktura (C++)