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 lokale Objekt auf das Objekt zeigen, dem der Rückgabewert zugewiesen ist der Methode?
%Vor%In Verwendung:
%Vor%Bezieht sich builder.ObjectPtr auf newObject?
Nein.
Sie speichern einen baumelnden Zeiger.
Ihr Programm wird, wenn es diesen Zeiger verwendet, undefined Verhalten haben, und das ist das.
Keine Menge der praktischen Optimierung wird Sie vor Ihrem Schicksal bewahren.
Tags und Links c++ c++11 copy-elision