Share via


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

Stockage de données d'union de type numérique

Voir aussi

Référence

Classes, structures, unions et

Mots clés C++

Unions anonymes

classe (C++)

struct (C++)