右值存储在C++中的何处
Where are rvalues stored in C++?
我最近正在学习C++ 11 个新功能。但是,我对右值的一件事并不完全理解。
请考虑以下代码:
string getText ()
{
return "Fabricati diem";
}
string newText = getText();
调用 getText()
会创建一个复制到变量newText
r 值。但是这个价值究竟存储在哪里?复制后会发生什么?
调用getText()会创建一个r值,该值被复制到newText变量中。
它可能会创建一个临时的;但这是允许复制省略的一种情况,所以更有可能newText
由函数返回直接初始化,没有临时的。
但是这个价值究竟存储在哪里?
由编译器决定在哪里存储临时文件;标准仅指定其生命周期。通常,它将被视为自动变量,存储在寄存器或函数的堆栈帧中。
临时表达式的复制后会发生什么?
生存期延伸到创建它的完整表达式的末尾(除非它用于初始化引用,在这种情况下,它的持续时间与该引用一样长)。所以在这里,它在使用它初始化newText
后立即被销毁。
相关文章:
- 变量如何以及在何处可能没有C++关联的名称?
- 在何处放置与类方法相关的帮助程序函数C++
- 如何以及在何处使用带QT的Basler Cam实现opencv人脸检测代码
- 在何处声明序列化BOOST_CLASS_EXPORT
- 在 JavaScript 中,值的数据类型存储在何处以及如何存储?
- 应使用 CMake install 命令将可执行资源文件安装到何处?
- 如何在何处获取 MSVS 2008(32 位)编译器工具链的编译器,而无需安装 MSVS2008
- 在何处查看发布者发送的输出数据
- 在何处更改参考代码以从 HEVC 编码的视频中提取运动矢量
- 将删除运算符放置在何处以进行动态变量
- 如果常量引用延长了此右值的寿命,则此右值驻留在何处?
- 无法确定未解决的外部错误来自何处
- opengl 位于何处(GPU 软件或操作系统)?
- 成员数组位于何处
- 在C++中创建文件时,创建的文件保存在何处
- 从整数到枚举值时,如何和何处检查错误
- 我该如何判断k-server动态解决方案的最佳路径以数组成本[i] [j] [k] [t]位于何处
- 如何检测标头从何处包含
- 常量存储在何处以及如何存储
- "printf"在 Windows 非控制台应用程序中写入何处?