[英]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.