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 :
Et voici le constructeur de copie :
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; }; };
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 ?
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; }
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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 union { int a; int b; }
Merci![]()
Partager