Union
union est un type défini par l'utilisateur de données ou de classe qui, à un moment donné, contient uniquement un objet de sa liste des membres (même si cet objet peut être un tableau ou un type de classe).
union [tag] { member-list } [declarators];
[union] tag declarators;
Paramètres
tag
le nom de type donné à l'union.member-list
liste des types de données que l'union peut contenir.Consultez la section Notes.declarators
Liste des déclarateurs spécifiant les noms de l'union.Consultez Vue d'ensemble des déclarateurs pour plus d'informations.
Notes
La liste des membres d'une union représente des données que l'union peut contenir.Une union nécessite suffisamment de stockage pour contenir le plus grand membre dans sa liste des membres.Pour plus d'informations, reportez -vous à Déclarations des unions (référence du langage C).
déclarer une union
Commencez la déclaration d'une union avec le mot clé des unions, et placez la liste des membres dans les accolades :
// 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()
{
}
À l'aide d'une union
L'union C++ est un formulaire limité du type de classe.Il peut contenir des spécificateurs d'accès (public, protégé, private), des données membres, et les fonctions membres, y compris des constructeurs et des destructeurs.Il ne peut pas contenir de fonctions virtuelles ou des données membres statiques.Elle ne peut pas être utilisée comme classe de base, ni elle peut avoir des classes de base.l'accès par défaut des membres dans une union est public.
Le type d'union c ne peut contenir que des données membres.
En C, vous devez utiliser le mot clé d' union pour déclarer une variable d'union.En C++, le mot clé d' union est inutile :
union DATATYPE var2; // C declaration of a union variable
DATATYPE var3; // C++ declaration of a union variable
Une variable d'un type d'union peut contenir une valeur de n'importe quel type déclaré dans une union.Utilisez l'opérateur member-selection (.) pour accéder à un membre d'une union :
var1.i = 6; // Use variable as integer
var2.d = 5.327; // Use variable as double
Vous pouvez déclarer et initialiser une union dans la même instruction en assignant une expression placée entre accolades.l'expression est évaluée et assignée au premier champ de l'union.
Exemple
// 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);
}
Sortie
10
3.141600
L'union d' NumericType sont organisées en mémoire (point) comme indiqué dans l'illustration suivante.
Stockage de données dans l'union de NumericType