Constructeur de copie et union
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:
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:
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:
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 :)