Operator Überladung const Argument
-
Hallo,
ich habe gerade folgende Beispiel gelesen:Rational operator+(long a, const Rational& b) { Rational t(a,1); return t+b; }Wieso wird hier long a nicht als const übergeben?
-
"a" wird per Kopie, nicht per Referenz übergeben, d.h. der Benutzer kann sich sicher sein, dass das übergebene Objekt nicht verändert wird.
-
Bruder Lustig schrieb:
"a" wird per Kopie, nicht per Referenz übergeben, d.h. der Benutzer kann sich sicher sein, dass das übergebene Objekt nicht verändert wird.
Wieso dann nicht const& ?
-
Schwester Unlustig schrieb:
Bruder Lustig schrieb:
"a" wird per Kopie, nicht per Referenz übergeben, d.h. der Benutzer kann sich sicher sein, dass das übergebene Objekt nicht verändert wird.
Wieso dann nicht const& ?
Hat keinen Mehrwehrt, bzw. im Gegenteil, könnte sogar unter Umständen hemmend wirken.
Bei grossen Objekten ist der Mehrwehrt klar, man muss nicht ein ganz grosses Objekt kopieren, sondern nur eine Adresse. Bei einemlongist dieser Vorteil aber nicht gegeben. Eine Kopie könnte ein Kompiler aber womöglich besser wegoptimieren.Grüssli