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