Mögliche Duplizieren:
Is it better in C++ to pass by value or pass by constant reference?Warum würden Sie ein Objekt nach Wert in C geben ++
Ich bin mir bewusst, die Unterschiede von in C++ von Wert, Zeiger und Referenz vorbei, und Ich würde in Erwägung ziehen, Objekte nach Wert (anstelle von const) in C++ zu übergeben, um fast immer einen Programmierfehler zu sein.
void foo(Obj o); ... // Bad
void foo(const Obj &o); ... // Better
Der einzige Fall, ich denken kann, wo es sinnvoll sein könnte von Wert zu übergeben, anstatt konstanter Referenz ist, wo das Objekt kleiner als eine Referenz, und nach Wert vorbei ist daher effizienter.
Aber das ist sicher die Art von Sache, die Compiler gebaut werden, um zu bestimmen?
Warum C++ eigentlich müssen Pässe von Wert und übergibt durch konstante Referenz, und - sind Compiler erlaubt, automatisch den Anruf zu (und von) einer konstanten Referenz falls zu konvertieren?
(Es scheint 100s von C++ Aufrufkonvention Frage, Fragen über die Unterschiede zwischen (sagen wir) Wert und Referenz zu sein - aber ich nicht finden konnte, das „Warum?“ Fragte.)
Was ist mit jedem Mal, wenn Sie eine Kopie benötigen? Füge 'Obj o2 (o);' als erste Zeile hinzu? Das scheint ziemlich sinnlos. Verschieben Sie auch Semantik. – delnan
@ delnan - Danke. Normalerweise tue ich das, was du beschreibst, denn ich denke, das ist ein Implementierungsdetail der Funktion, das nicht Teil der externen Signatur sein sollte. – Roddy
@Nemo. Ja dank. Gewählt, um zu schließen! Leider ist der Bienenstock-Verstand ein besseres Suchwerkzeug als das eingebaute SO ... – Roddy