Bonsoir,

J'ai à utiliser un union dans une classe afin d'éviter à avoir deux classes différentes. Toutefois, je vous demande juste une petite confirmation.

Imaginons la classe suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class A
{
   public:
      A () // Constructeur
      {
      }
 
   private:
      int nimporteQuelleDonnee;
 
      union
      {
          int cas1;
          int cas2;
      };
};
Et voici le constructeur de copie :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
A (const A & a)
{
   nimporteQuelleDonnee = a.nimporteQuelleDonnee; // Pas de problème ici
 
   cas1 = a.cas1;
}
En gros, je voudrais savoir si, lorsque je copie par exemple un objet A utilisant le cas2, si dans ce cas là le nouvel objet aura bien la même valeur dans cas2, malgré le fait que ce soit cas1 = a.cas1 que j'appelle dans le constructeur de copie ?

Je suis quasiment sûr que ça ne pose pas de problème étant donné qu'il me semble que la mémoire est partagé dans un union, donc si j'ai :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
union
{
    int a;
    int b;
}
Si j'écris a = 5, et que j'écirs std::cout << b, ça m'affichera quand même 5. Mais c'est juste pour être sur à 100% :p.

Merci