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