临时对象生存周期与const T&
引入
问题代码
|
“Hello world!”的构建
auto& ref = foo("Hello world!"); |
结论
在函数调用中绑定到函数形参的临时量,存在到含这次函数调用的全表达式结尾为止:如果函数返回一个生命长于全表达式的引用,那么它会成为悬垂引用。
临时对象的生存周期存在于全表达式。
表达式结束,生命周期结束。
易混淆的点
return 语句中绑定到函数返回值的临时量不会被延续:它在返回表达式的末尾立即销毁。这种 return 语句始终返回悬垂引用。
这种描述指的是以下情况
const std::string& foo() { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 whaleghostの小窝!