Uniões

A união é um definido pelo usuário dados ou classe de tipo que, em qualquer momento, contém apenas um objeto de sua lista de membros (embora esse objeto pode ser uma matriz ou um tipo de classe).

union [tag] { member-list } [declarators];
[union] tag declarators;

Parâmetros

  • tag
    O nome de tipo dado para a união.

  • member-list
    Lista dos tipos de dados na união pode conter.Consulte Comentários.

  • declarators
    Lista de Declarador especificando os nomes da união.Consulte Visão geral de declaradores para obter mais informações.

Comentários

O lista de membros de uma união representa os tipos de dados na união pode conter.Uma união requer armazenamento suficiente para manter o maior membro na sua lista de membros.Para obter mais informações, consulte Declarações de união (referência de linguagem C).

Declarando uma união

Comece a declaração de uma união com a palavra-chave de união e coloque a lista de membros entre chaves:

// 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()
{
}

Usando uma união

Uma união C++ é uma forma limitada do tipo de classe.Ele pode conter especificadores de acesso (public, protected, private), dados de membro e funções de membro, incluindo construtores e destrutores.Ele não pode conter funções virtuais ou membros de dados estáticos.Ele não pode ser usado como uma classe base, nem que ele pode ter classes base.Padrão de acesso de membros em uma união é público.

Um tipo de união c pode conter somente os membros de dados.

Em C, você deve usar o união palavra-chave para declarar uma variável de união.No C++, o união palavra-chave não é necessário:

union DATATYPE var2;   // C declaration of a union variable
DATATYPE var3;         // C++ declaration of a union variable

Uma variável de um tipo de união pode conter um valor de qualquer tipo declarado na união.Use o operador de seleção de membro (.) para acessar um membro de uma união:

var1.i = 6;           // Use variable as integer
var2.d = 5.327;       // Use variable as double 

Você pode declarar e inicializar uma união na mesma declaração, atribuindo uma expressão entre chaves.A expressão é avaliada e atribuída ao primeiro campo da união.

Exemplo

// 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);
}

Saída

10
3.141600

O NumericType união está organizada em memória (conceitualmente) como mostrado na figura a seguir.

Armazenamento de dados na união de NumericType

Armazenamento de dados de união de tipo numérico

Consulte também

Referência

Classes, estruturas e uniões

Palavras-chave C++

Uniões anônimos

classe (C++)

struct (C++)