Problème avec la copie de variables - C++ - Programmation
Marsh Posté le 02-07-2004 à 09:50:50
en initialisant t2 à partir de t1, tu en copies tous les membres, notamment le pointeur *a qui sera donc le même sur les 2 objets. en l'occurence, toute modification de l'objet pointé par a sur t1 sera répercuté sur t2 puisqu'ils ont la même adresse.
=> il te faut un constructeur de copie pour ta classe test
Marsh Posté le 02-07-2004 à 09:56:40
Je ne connais pas du tout cette notion de constructeur de copie. A quoi sert il, et comment l'utiliser pour résoudre mon problème ?
Marsh Posté le 02-07-2004 à 10:00:28
euh, tu suis des cours ou pas ?
un constructeur de copie est utilisé justement dans ton cas précis (entre autres) : lorsqu'une classe contient une variable membre de type objet dynamique (un pointeur quoi)
dans ton cas précis, ton constructeur de copie devra réaliser une nouvelle initialisation de ton pointeur a, pour éviter qu'il n'ait la même adresse que l'objet que tu copies.
dans la déclaration de ta classe, rajoute la ligne suivante :
Code :
|
ce constructeur sera implémenté comme ceci :
Code :
|
et O miracle, tu devrais obtenir les valeurs souhaitées (4 et 5)
Marsh Posté le 02-07-2004 à 10:34:14
Ca fonctionne parfaitement, merci pour ton aide.
Je vais me pencher plus profondément sur cette notion qui m'était totalement inconnue.
Marsh Posté le 02-07-2004 à 11:02:32
harko t'es un boolay
vous êtes tous des boolay
Celina > dans ce genre de cas, c'est à dire avec des pointeurs, ce que génère le compilateur à ta place n'est pas satisfaisant car ça ne fait qu'une copie de surface. il faut faire une copie profonde, c'est à dire allocation+recopie
la forme de Coplien, tu dois définir minimum
A()
A(const A & );
A & operator=(const A & );
~A();
donc Harko s'est royalement planté dans la signature, et surtout il a oublié l'operator=. tu suis tes cours ?
Marsh Posté le 02-07-2004 à 11:14:53
Taz a écrit : harko t'es un boolay |
rooo, mais j'ai pas dit tant de conneries que ça bon dieu
j'ai juste oublié un const et l'operator=, y'a des boolays qui ont fait pire hein
Marsh Posté le 02-07-2004 à 09:48:22
Bonjour à tous,
Je continue mon apprentissage du C++, et je suis confrontée à un petit problème. Voici mon code de test :
J'obtiens la sortie suivante :
5
5
Et je ne comprends pas pourquoi. On dirait que la modification de la variable "a" de t2 a modifié la variable "a" de t1.
Je ne comprends pas pourquoi.
Merci d'avance pour votre aide