copy-elision

Copy elision verweist auf eine Ausnahme von der Als-ob-Regel, die das Weglassen von Kopien erlaubt
2
Antworten

Der Kopierkonstruktor wird nicht aufgerufen, wenn der Wert zurückgegeben wird

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...
30.01.2014, 21:35
5
Antworten

Ist dieser Code unabhängig von der Kopierqualität gut definiert?

Betrachten Sie diesen Code: %Vor% Man würde eine Ausgabe wie folgt erwarten: %Vor% und das ist wirklich was ich bekomme. Aber aufgrund von copy elision könnte sich out an derselben Stelle im Speicher befinden wie in und dazu führ...
23.10.2015, 14:48
3
Antworten

Kann Elision in Catch-Anweisungen auftreten?

Betrachten Sie eine Ausnahmeklasse mit einem Kopierkonstruktor mit Nebeneffekten. Kann ein Compiler den Aufruf des Kopierkonstruktors hier überspringen: %Vor% Was ist damit? %Vor% (Ja, ich weiß, das ist alles sehr hässlich, das wurde...
13.09.2011, 12:02
2
Antworten

Kopieren des Konstruktors wird nicht aufgerufen, wenn ein Objekt mit dem Rückgabewert einer Funktion initialisiert wird

Betrachten Sie den folgenden Code: %Vor% Die Ausgabe des obigen Codes mit g++ file.cpp ist: %Vor% Die Ausgabe des obigen Codes mit g++ -fno-elide-constructors file.cpp ist: %Vor% Ich kenne Return-Value-Optimierung. Meine Frage...
14.11.2014, 19:16
1
Antwort

Einen Zeiger auf ein Objekt speichern, das mit NRVO zurückgegeben wurde

Wenn ich eine Factory-Methode schreibe, die ein Objekt lokal instanziiert und dann nach Wert zurückgibt, um NRVO zu nutzen (wie einige der Antworten hier: c ++ 11 Rückgabewertoptimierung oder Verschiebung? ), wird ein Zeiger / Verweis auf das l...
30.06.2016, 13:21
3
Antworten

Wie erzwinge ich die Kopierfreiheit, warum funktioniert es nicht mit dem Konstruktor für gelöschte Kopien?

Ich habe eine uncodierbare Klasse. Kopieren wäre problematisch. Ich möchte garantieren , dass es nie kopiert wird, also habe ich seinen Kopierkonstruktor deleted : erstellt %Vor% Leider wird g ++ dies nicht auf den Grund kompilieren: %V...
06.07.2016, 13:08