2016-07-29 6 views

Antwort

1

Sie erstellen ein temporäres Objekt im Stapel und geben einen Zeiger darauf zurück. Es gibt keine Garantie, dass es nach dem Ende der Funktion noch leben wird.

2

Was würde der Aufrufer dieser Funktion tun, nachdem er sie aufgerufen hat?

Was ist die Lebensdauer von t, und wann endet es?

Wie würden sich beide mit unglücklichen Folgen verbinden?

t ist lokal für die Funktion, es wird direkt an der schließenden Klammer sterben. Der zurückgegebene Zeiger kann überhaupt nicht verwendet werden, aber das würde ein Aufrufer wahrscheinlich tun und Undefined Behavior auslösen.

1

Sie einen Punkt auf ein lokales Objekt zurückkehrt, die nicht am Ende der Funktion

1

Sie Rückkehr einen Zeiger auf T, die den Gültigkeitsbereich verlässt, wenn Sie aus der Funktion zurückgibt, existieren. Sie sollten einen neuen Zeiger innerhalb der Funktion erstellen und diesen zurückgeben.

cObject *t = new cObject(); 
return t; 
+1

keine Referenz, sondern Zeiger –