Yip*_*Yay 5 c++ variables construction lifetime visual-studio
这段代码有效吗?
int foo()
{
std::vector<std::string>& v = std::vector<std::string>(5, "X");
// Do something silly...
return 42;
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我认为临时std::vector对象(从赋值标记开始)应该在构造之后被破坏(从而使引用无效).
然而,调试证明我错了,而且,我意识到我不太明白为什么在函数返回时会破坏临时变量.
我想我对一些基本的东西有很强的误解,所以请赐教:)
您显示的代码是非法的 - 临时代码只能绑定到右值引用或const左值引用.
VC++碰巧允许它作为扩展(并提供4级警告说明).
| 归档时间: |
|
| 查看次数: |
847 次 |
| 最近记录: |