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