Wo sind rvalues ​​in C ++ gespeichert?

8

Ich lerne gerade neue C ++ 11 Funktionen. Jedoch verstehe ich eine Sache über rvalues ​​nicht völlig.

Betrachten Sie folgenden Code:

%Vor%

Aufruf an getText() erstellt einen r-Wert, der nach newText Variable kopiert wird. Aber wo genau ist dieser rvalue gespeichert? Und was passiert nach dem Kopieren?

    
Kao 08.01.2015, 13:43
quelle

1 Antwort

8
  

Aufruf von getText () erzeugt einen r-Wert, der in newText-Variable kopiert wird.

Es könnte ein temporäres erstellen; Aber dies ist eine Situation, in der Kopie Elision erlaubt ist, also ist es wahrscheinlicher, dass newText ist direkt von der Funktion return initialisiert, ohne temporäre.

  

Aber wo genau ist dieser rvalue gespeichert?

Es liegt an dem Compiler, wo ein temporäres gespeichert werden soll; Der Standard gibt nur seine Lebensdauer an. In der Regel wird es wie eine automatische Variable behandelt, die in Registern oder im Stack-Frame der Funktion gespeichert wird.

  

Und was passiert nach dem Kopieren?

Die Lebensdauer eines temporären Objekts erstreckt sich bis zum Ende des vollständigen Ausdrucks, der es erzeugt hat (es sei denn, es wird verwendet, um eine Referenz zu initialisieren; in diesem Fall dauert es so lange wie diese Referenz). Also, hier ist es sofort zerstört, nachdem es newText initialisiert hat.

    
Mike Seymour 08.01.2015, 14:12
quelle

Tags und Links