Type de retour/Surcharge

Type de retour/Surcharge

by Charles Jean François Nicolas Gendreau -
Number of replies: 2

Bonjour,

Je me demandais comment on choisissait le type de retour dans une surcharge d'opérateur. Dans l'énoncé de l'ex.2 de cette série il est écrit: 

  • addition et soustraction de deux vecteurs :
    Vecteur& Vecteur::operator+=(const Vecteur&);
    Vecteur& Vecteur::operator-=(const Vecteur&);
    const Vecteur operator+(Vecteur, const Vecteur&) const;
    const Vecteur operator-(Vecteur, const Vecteur&) const;
  • multiplication par un scalaire :
    Vecteur& Vecteur::operator*=(double);
    
Je ne vois pas quand est-ce que l'on doit utiliser la réference & en retour.

Merci de votre réponse.



In reply to Charles Jean François Nicolas Gendreau

Re: Type de retour/Surcharge

by Raffaele Ancarola -

Le cas de la référence (Vecteur&) c'est quand la méthode retour l'object de la classe *this: le pointeur de la l'object de la classe déréferentié, qui est de type Vecteur&.

Ces méthodes peuvent être bien void mais retourner *this permet de enchainer les opérations dans le code.

Par éxemple:

Vecteur v = {1, 2, 4};
(v *= 4) += {3, 2, 0};