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