Non, il ne s'agit pas de l'erreur que tout le monde commet lors du passage des locaux. J'essaye juste de comprendre en renvoyant une référence à un objet que vous passez (je lis à travers l'amorce).A propos de renvoyer des références à des objets
Donc, si j'ai une fonction comme ceci:
const foo & foo::function2(const foo & val) const
{
using namespace std;
return *this;
}
puis je suis dans la principale faisant:
foo object1;
object1.someproperty = 7;
foo object2 = object1.function2(object1);
object2.someproperty = 5;
cout << &object1 << endl;
cout << &object2 << endl;
Quand je reviens par référence, ne devrait pas avoir le même object2 adresse (et propriétés) en tant qu'objet1? Ne devrait-il pas changer «someproperty» dans un objet, changer la valeur dans l'autre? Ou, est-ce que renvoyer une référence à un objet copie simplement les valeurs dans le nouvel objet?
Il semble que la même chose se passe comme si je venais juste de dire que j'allais retourner un objet foo au lieu d'une référence à un objet.
Non, car vous déclarez deux objets différents sur la pile et copiez leurs valeurs. – cpx