Bonjour tout le monde !
J'ai une question qui me dérange depuis longtemps et que de multiples essais n'ont pas réussi à solutionner.
Quel doit être le type de retour d'un opérateur surchargé ?
Prenons par exemple une classe vecteur et son opérateur +=.
Vecteur& Vecteur::operator+=(const Vecteur& v);
La référence retournée doit-elle être constante ou pas ?
De même pour les opérateurs renvoyant une valeur, doit-elle être constante ou pas ?
Vecteur operator+(const Vecteur& v,const Vecteur& w);
D'après GoTW, les retours doivent être const, d'après les exemples de la FAQ, il n'y a pas de const, et c'est comme cela pour toutes les sources; on trouve les deux avis.
Personellement, j'ai jamais mis de const, mais je ne suis pas convaincu de cette approche.
Merci à vous.
Partager