繁体   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