In herkömmlichem C ++ ist die Übergabe von Werten an Funktionen und Methoden für große Objekte langsam und wird im Allgemeinen verpönt. Stattdessen neigen C ++ - Programmierer dazu, Referenzen weiterzugeben, was schneller ist, aber alle möglichen komplizierten Fragen zum Besitz und insbesondere zur Speicherverwaltung aufwirft (falls das Objekt Heap-zugewiesen ist).
Jetzt haben wir in C ++ 11 Rvalue-Referenzen und Verschiebungskonstruktoren, was bedeutet, dass es möglich ist, ein großes Objekt (wie ein Objekt std::vector
) zu implementieren , das kostengünstig als Wert in eine Funktion und aus einer Funktion übergeben werden kann.
Bedeutet dies also, dass der Standardwert für Instanzen von Typen wie std::vector
und als Wert übergeben werden sollte std::string
? Was ist mit benutzerdefinierten Objekten? Was ist die neue Best Practice?
const std::string&
und nicht als Kopie verwendet hat. Der erste Thread wurde dann beendet ...
pass by reference ... which introduces all sorts of complicated questions around ownership and especially around memory management (in the event that the object is heap-allocated)
. Ich verstehe nicht, wie kompliziert oder problematisch es für das Eigentum ist? Kann ich etwas verpasst haben?