Bonsoir a tous, je suis en train d'etudier la surcharge d'operateurs et j'ai trouve de nombreux exemples differents de leur utilisation.
Entre autre je ne comprends pas ce qu'une fonction doit retourner:
Objet Objet::operator=(const& rhs)
ou bien
Objet& Objet::operator=(const& rhs)
Autrement dit, doit on retourner l'objet lui meme (je pense que dans ce cas la ce sera le constructeur de copie qui sera appele pour retourner les champs "by value") ou alors une REFERENCE de l'objet?
çà doit dépendre de l'opérateur en question.
par exemple += renvoit une référence sur "this" mais + renvoie un objet temporaire (donc pas de référence sinon plantage assuré).
la méthode operator renvoie toujours un OBJET (pas une référence) qui est une instance de la classe courrante...
Objet Objet::operator+=(Objet &objetARecopier);
est le prototype de toute méthode operator=()... et il retourne toujours *this...
faux
les operateurs modifiants la classe elle-meme (=, +=, -=, /=, *=, %=) sont de la forme
O &operator=(const O &Other);
les operateurs "simples" (+, -, /, *, %) doit etre implementé en fonction libre et appelle de preference leurs equivalent "compliqué" (pour + se sera +=)
ps: ici je parle de facon general
O operator+(const O &Me, const O &Other)
{
return O(Me) += Other;
}
ensuite il y a les operateurs d'incrementation et de decrementation
@ Chlab: Tu m'as surement mal lu, je voulais dire dans toute fonction =. j'ai jamais parlé de += ou de -= ou de tout autre chose... mais il me semble qu'il serait bien difficile de surcharger un jour l'operateur = sans que ça ne donne ce protorype...
EDIT: oups, c'est vrai... j'ai mal écrit mon message... c'est vrai, la methode operator=() renvoie toujours une instance de la classe courrante...
Je pense que lui il veut savoir comment retenir ce que retournent les op'.
Surcharge d'operateurs: type du retour?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
* Un wrapper C++ pour sqlite * Une alternative a boost units