此代码有效吗?
int foo()
{
std::vector<std::string>& v = std::vector<std::string>(5, "X");
// Do something silly...
return 42;
}
出于某种原因,我认为临时 std::vector
对象 (从赋值符号开始) 应该在构造 之后立即销毁(因此呈现引用无效)。
但是,调试证明我错了,好吧,我意识到我不太明白为什么当函数返回时临时变量会被破坏。
我想我对一些基本的东西有很大的误解,所以请赐教:)
最佳答案
您显示的代码是非法的——临时对象只能绑定(bind)到右值引用或const 左值引用。
VC++ 碰巧允许它作为扩展(并给出了 a level 4 warning 这样说)。
关于C++ 临时变量生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10540157/