Sdílet prostřednictvím


Sjednocení

Objekt union je uživatelská data nebo třída typu obsahující, v každém okamžiku pouze jeden objekt ze seznamu členů.Objekt může být pole nebo typ třídy).

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

Parametry

  • tag
    Název typu sjednocení.

  • member-list
    Seznam typů dat, které sjednocení může obsahovat.V části poznámky.

  • declarators
    Seznam deklarátorů určující názvy sjednocení.Další informace naleznete v tématu Přehled deklarátorů.

Poznámky

member-list spojení představuje typy dat, které mohou obsahovat unie.Spojení vyžaduje dostatek úložného prostoru pro uložení největší člena v jeho member-list.Další informace naleznete v tématu Deklarace sjednocení (reference jazyka C).

Deklarace sjednocení

Začněte prohlášení o spojení s union klíčové slovo 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;
    int *int_ptr;
} var1;          // Optional declaration of union variable

int main()
{
}

Použití sjednocení

Sjednocení jazyka C++ je omezenou formou typu třídy.Může obsahovat specifikátory přístupu (public, protected, private), členská data a členské funkce včetně konstruktorů a destruktorů.Nemůže však obsahovat virtuální funkce ani statické datové členy.Nelze jej použít jako základní třídu a stejně tak základní třídy nemůže mít.Výchozí přístup členů ve spojení je veřejné.

V jazyce C++ nepotřebujete použít unie klíčové slovo, když deklarujete proměnnou union.

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

Proměnná typu sjednocení může udržovat jednu hodnotu libovolného typu deklarovaného ve sjednocení.Pro přístup ke členům sjednocení použijte operátor volby členu (.):

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

Sjednocení lze deklarovat a inicializovat v jednom příkazu přiřazením výrazu uzavřeného v závorkách.Výraz je vyhodnocen a přiřazen do prvního pole ve sjednocení.

Příklad

#include <iostream>
using namespace std;

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

int main()
{
    union NumericType Values = { 10 };   // iValue = 10
    cout << Values.iValue << '\n';
    Values.dValue = 3.1416;
    cout << Values.dValue);
}

Výstup

10
3.141600

Sjednocení NumericType je v paměti uspořádáno (obecně) tak, jak ukazuje následující obrázek.

Uložení dat ve sjednocení NumericType

Úložiště dat v unie číselný typ.

Viz také

Referenční dokumentace

Třídy, struktury a spojení

Klíčová slova jazyka C++

Anonymní sjednocení

třída (C++)

struct (C++)