Udostępnij za pośrednictwem


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

Zobacz też

Informacje

Klasy, struktury i związki

Słowa kluczowe języka C++

Związki anonimowe

klasa (C++)

struktura (C++)