move-semantics

Move semantics ist eine Programmiersprachenfunktion, die es ermöglicht, einen Kopiervorgang durch einen effizienteren "move" zu ersetzen, wenn das Quellobjekt ein temporäres oder ein anderweitig ablaufendes Objekt ist.
2
Antworten

Welche std-Typen garantiert leer / null sind, nachdem sie im Konstruktor von move als arg verwendet wurden

Ich weiß, shared_ptr , unique_ptr , weak_ptr sind garantiert leer, nachdem sie im Konstruktor des gleichen Typs als RVR-Argument verwendet wurden, aber ich frage mich, ob Standard dies für einige andere std:: -Typen neben dem angibt di...
13.01.2016, 16:40
4
Antworten

Wie sollte ich Funktionsparameter schreiben, um eine Verschiebung und nicht eine Kopie zu erzwingen?

Ich möchte einen großen Container aus einem Rückgabewert mithilfe des Konstruktors dieser Klasse in eine andere Klasse verschieben. Wie formuliere ich den Parameter, um sicherzustellen, dass er nicht kopiert wird? %Vor% Wird obige Formulieru...
08.01.2014, 19:31
2
Antworten

Semantik und Operatorüberladung verschieben

Dies steht im Zusammenhang mit dieser Antwort von Matthieu M. zur Verwendung der Bewegungssemantik mit dem Überladen des + -Operators ( im Allgemeinen, Operatoren, die nicht direkt wieder auf den linken Param umleiten). Er schlug vor, drei...
21.04.2013, 21:35
3
Antworten

Warum müssen wir den rvalue-Verweis auf null im Move-Konstruktor setzen?

%Vor% Ich kann den Grund für das Festlegen von rhd.pds auf nullptr nicht verstehen. Was passiert, wenn wir diese Zeile entfernen: rhs.pds = nullptr;     
01.03.2014, 11:54
3
Antworten

Sind die Bewegungssemantiken unvollständig?

Die Semantik zum Verschieben ersetzt die Kopiersemantik in Situationen, in denen das Kopieren ineffizient ist. Die Kopiersemantik behandelt vollständig kopierbare Objekte, einschließlich const-Objekte. Es existiert bereits eine Vielzahl von n...
13.01.2014, 07:12
2
Antworten

Warum hat push_back zwei Überladungen für lvalues ​​und rvalues?

Warum sollte eine Klasse / Funktion zwei Überladungen haben, eine für lvalue und eine für rvalue? ZB von dies video, es heißt, wir haben zwei Überladungen für vector<T>::push_back %Vor% Warum können wir nicht nur eine Überladun...
26.01.2013, 07:50
3
Antworten

Wie kann ich eine Box wiederverwenden, aus der ich den Wert verschoben habe?

Ich habe einen nicht kopierbaren Typ und eine Funktion, die es verbraucht und (vielleicht) erzeugt: %Vor% Betrachten Sie nun einen Typ, der konzeptionell sehr ähnlich zu Box : ist %Vor% Wir können eine Funktion schreiben, die den Inhal...
15.07.2016, 13:17
2
Antworten

Konstruktor bewegen, Vektor mit std :: move zwischen zwei Objekten verschieben

Ich habe ein Objekt wie das Folgende und ich versuche, einen Move-Konstruktor zu implementieren, damit Sie eine Einfügung für std::vector<Mesh> haben können. %Vor% Ist das der richtige Weg? Und wenn ja, was ist der Wert von other.Va...
09.02.2013, 01:38
2
Antworten

Soll das verschobene Objekt in einem "sicheren" Zustand bleiben? [Duplikat]

Wenn das moved-from-Objekt in einem C ++ 11-Zustand implementiert wird, sollte es in einem sicheren -Zustand verbleiben oder kann es einfach in einem "junk" -Zustand belassen werden? z.B. Was ist die bevorzugte Option, um den move -Kons...
30.10.2012, 11:12
1
Antwort

C ++ 14 automatisch erkennen "return sollte std :: move" Situation verwenden

Mein Verständnis ist, dass in C ++ 17 das folgende Snippet das Richtige tun soll: %Vor% Das heißt, in C ++ 17 soll der Compiler sowohl d1 als auch d2 als rvalues ​​für die Zwecke der Überladungsauflösung in diesen beiden return-Anweisu...
11.02.2018, 02:47