![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
Bakura
Le compilo te créé automatiquement un opérateur d'affectation et copie juste membre à membre. Quand tu créés deux objets, le constructeur est appelé deux fois, ton compteur est donc incrémenté deux fois. Lorsque tu en créé un, et que tu fais : point b=a; Le compilateur copie membre à membre, mais n'incrémente pas ton compteur. Ce que tu dois faire, comme l'a dit Montgaulois, c'est redéfinir l'opérateur = :
1 2 3 4 5 6
| Point & Point::operator= (const Point & monPoint)
{
x = monPoint.x;
y = monPoint.y;
++compteur;
} |
En y réfléchissant , je croit que l'on as dit une bêtise. Ce n'est pas que l'opérateur = qu'il faut redéfinir , mais la création par recopie aussi. L'operateur = ne devrait pas incrémenté compteur.
sinon
1 2 3 4 5 6
|
point a(-1,5);
point b =a;//indéfinie même avec un operateur = ??? je sais pas
b=a; //compteur++
b=a; //compteur++ |
et
point b = a <=> point b(a);//il me semble
Partager