En plus des expressions tarabiscotés, que l'on supporte par compatibilité ascendante avec le C -- si j'ose dire--, si l'opérateur d'affectation renvoie bien une référence non-constante, alors on est assuré que seul *this puisse être renvoyé de la sorte.
Bref, c'est une convention.
Si tu en as l'occasion, je ne peux que te conseiller d'investir dans une ressource qui te montre le C++ sans pré-requis autre que des notions d'algorithmique -- je pense p.ex. à Accelerated C++. Si tu pars de tes bases C et Java, tu vas perdre un peu de temps à réinventer des trucs qui seront les trois-quart du temps bancals.
Autrement. Dans un premier temps : ne jamais faire de "delete this". (Il y a quelques cas où c'est interessant, mais pas là, pas quand on débute)
La signature
Point* Point::operator=(Point* p)
ne sera utilisé que si tu affectes un pointeur (vers une donnée non constante!!) à ton objet :
1 2 3 4 5
| point * p1 = new Point(42,43);
*p1 = new Point(12,14); // fuite de mémoire
Point p3(24,18);
*p1 = &p3;
p3 = p1; |
Bref, ce n'est pas du tout fait pour être utilisé de la sorte. La copiabilité, en C++, marche avec des valeurs. Pas avec des entités. Java n'a que des entités pour les types customs. On ne fait pas des cabrioles non plus pour tester l'égalité.
En général, je me sers explicitement du new en C++ pour gérer des entités et autres données aux cycles de vie "étendus" -- le bon mot ne me vient pas.
Partager