Unie
Element union jest zdefiniowana przez użytkownika danych lub klasy typem, w danym momencie, zawiera tylko jeden obiekt ze swojej listy elementów członkowskich.Obiekt może być tablica lub typu klasy).
union [tag] { member-list } [declarators]; [union] tag declarators;
Parametry
tag
Nazwa typu nadana unii.member-list
Lista typów danych, które może przechowywać unia.Zobacz uwagi.declarators
Lista deklaratorów określających nazwy unii.Aby uzyskać więcej informacji, zobacz Przegląd deklaratorów.
Uwagi
member-lisT Unii reprezentuje rodzaje danych może zawierać Unii.Związek wymaga za mało pamięci masowej do przechowywania największego elementu członkowskiego w jego member-list.Aby uzyskać więcej informacji, zobacz Deklaracje unii (Skorowidz języka C).
Deklarowanie unii
Zacznij deklaracji w związku z union słowo kluczowe i ujmować w nawiasy klamrowe listy elementów członkowskich:
// 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()
{
}
Używanie unii
Unia w języku C++ jest ograniczoną formą typu klasy.Może zawierać specyfikatory dostępu (public, protected, private), dane elementów członkowskich i funkcje członkowskie, w tym konstruktory i destruktory.Nie może zawierać funkcji wirtualnych lub elementów członkowskich danych statycznych.Nie może być używana jako klasa podstawowa, ani posiadać klas podstawowych.Dostęp domyślny elementów członkowskich w Unii jest publiczny.
W języku C++, nie trzeba używać Unii słowo kluczowe w deklaracji zmiennej union.
DATATYPE var3; // C++ declaration of a union variable
Zmienna typu union może pomieścić jedną wartość dowolnego typu zadeklarowanego w unii.Użyj operatora wyboru elementu członkowskiego (.), aby uzyskać dostęp do elementu członkowskiego unii:
var1.i = 6; // Use variable as integer
var2.d = 5.327; // Use variable as double
Można zadeklarować i zainicjować unię w tej samej instrukcji przez przypisanie wyrażenia ujętego w nawiasy klamrowe.Wyrażenie jest oceniane i przypisywane do pierwszego pola unii.
Przykład
#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);
}
Dane wyjściowe
10
3.141600
Unia NumericType jest umieszczona w pamięci (koncepcyjnie), jak pokazano na poniższym rysunku.
Przechowywanie danych w unii NumericType