Vor C++ 11, wenn ich eine Funktion hätte, die an großen Objekten operiert, wäre mein Instinkt, Funktionen mit dieser Art von Prototyp zu schreiben.Gibt es in C++ 11 immer noch die Notwendigkeit, einen Verweis auf ein Objekt zu übergeben, das die Ausgabe einer Funktion akzeptiert?
void f(A &return_value, A const ¶meter_value);
(Hier return_value ist nur ein leeres Objekt, das die Ausgabe der Funktion erhalten. A nur einige Klasse ist, die groß und teuer zu kopieren.)
In C++ 11, wobei Vorteil bewegt Semantik, ist die Standard-Empfehlung (wie ich es verstehe) die einfacher:
A f(A const ¶meter_value);
gibt es überhaupt noch eine Notwendigkeit, es auf die alte Weise zu tun, in einem Objekt vorbei den Rückgabewert zu halten?
Ich dachte, die Standard-Empfehlung war schon immer "mach was bequem ist und gehe aus dem Weg, wenn du es für nötig hältst" ... – Mehrdad
Es gab noch nie so etwas, schau mal http://cpp-next.com/ archive/2009/08/want-speed-pass-by-value/ –
@ K-ballo: Es könnte einen Vorstandard gegeben haben (obwohl die Leute es nicht anerkennen, C++ existierte fast 20 Jahre bevor es standardisiert wurde) . Obwohl vielleicht nicht, fing ich gerade an, C++ über die Zeit der Standardisierung zu lernen (und wusste nicht einmal, dass es zu der Zeit passierte), gab es so etwas wie Kopierschutz vor dem Standard? Wurde es von populären Compilern verwendet? –