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

8

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?

    
Scott Oliver 30.06.2016, 13:21
quelle

1 Antwort

5

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.

    
Lightness Races in Orbit 30.06.2016, 13:43
quelle

Tags und Links