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.
In einer Antwort auf eine Frage zu std::stack::pop() behauptete ich dass der Grund pop den Wert aus Gründen der Ausnahmesicherheit nicht zurückgibt (was passiert, wenn der Kopierkonstruktor eingibt).
@Konrad kommentierte, dass dies...
Ich habe eine Funktion, die auf einem großen Datenblock arbeitet, der als Sink-Argument übergeben wird. Mein BigData -Typ ist bereits C ++ 11-fähig und kommt mit voll funktionsfähigen Move-Konstruktor- und Move-Assignment-Implementierungen, s...
Warum verschieben Konstruktor für std::vector mit benutzerdefiniertem Zuordner nicht noexcept() aus dem Verhalten des Zuordners?
Dies führt dazu, dass die Klasse, die einen solchen Vektor einkapselt, nicht den (anderen) Vektor bilden ka...
Verwenden Sie diese Antwort habe ich meine eigene Methode zur Emulation von Bewegungssemantik in C ++ 03 basierend auf swap erfunden.
Zuerst erkenne ich move-semantics (d. h. Verfügbarkeit von C ++ 03):
%Vor%
Dann definiere ich bedin...
Ich habe mit C ++ - Konstruktoren herumgespielt. Hier ist mein Code:
%Vor%
Die Ausgabe ist:
%Vor%
Die ersten drei Zeilen zeigen an, dass die lokale Variable in der Funktion foo () mit Konstruktor erstellt und zerstört wird, wenn foo () z...
Ich habe eine Klasse, PlayerInputComponent :
.h:
%Vor%
.cpp:
%Vor%
und eine Klasse, PlayerMoveComponen t, die ein Mitglied PlayerInputComponent enthält und es initialisiert, indem ein std::unique_ptr als Parameter übergeben...
Gegebene Klasse X unten (spezielle Memberfunktionen, die nicht explizit definiert sind, sind für dieses Experiment nicht relevant):
%Vor%
Das folgende Programm erstellt einen Vektor von Objekten vom Typ X und ändert seine Größe, so d...
%Vor%
Meine erwartete Ausgabe sollte lauten:
%Vor%
Die tatsächliche Ausgabe ist jedoch: (Der C ++ - Compiler lautet: Visual Studio 2012)
%Vor%
Ist das ein Fehler von VC ++? oder nur mein Missverständnis?
Ich habe die folgende Implementierung der Singleton-Richtlinienklasse:
%Vor%
was ich dann über das seltsam wiederkehrende Vorlagenmuster (CRTP) verwende
%Vor%
Ich kann nicht herausfinden, warum ich den Verschiebungskonstruktor und den Zu...
Ich habe erwartet, dass std::make_move_iterator immer Inhalte verschieben wird, aber es scheint nicht.
Es sieht so aus, als ob Elemente in vector<string> verschoben werden, aber nicht in vector<int> .
Siehe das folgen...