簡體   English   中英

rvalues在C ++中存儲在哪里?

[英]Where are rvalues stored in C++?

我最近正在學習新的C ++ 11功能。 但是,我並不完全了解rvalues的一件事。

考慮以下代碼:

string getText ()
{
    return "Fabricati diem";
}

string newText = getText();

調用getText()會創建一個復制到newText變量的r值。 但這個右值究竟存儲在哪里? 復制后會發生什么?

調用getText()會創建一個復制到newText變量的r值。

它可能會創造一個臨時的; 但這是允許復制省略的一種情況,因此更有可能newText由函數return直接初始化,沒有臨時值。

但這個右值究竟存儲在哪里?

這取決於編譯器存儲臨時存儲的位置; 標准僅指定其生命周期。 通常,它將被視為自動變量,存儲在寄存器或函數的堆棧幀中。

復制后會發生什么?

臨時的生命周期延伸到創建它的完整表達式的末尾(除非它用於初始化引用,在這種情況下它會持續與引用一樣長)。 所以在這里,它在使用它初始化newText后立即被銷毀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM