C++ 临时变量生命周期

标签 c++ visual-studio variables lifetime construction

此代码有效吗?

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/

相关文章:

shell - "Variable not found"shell发出的错误

c++ - 为什么将有符号值分配给无符号整数时编译器不给出错误? - C++

c++ - 当您声明一个 friend 然后在类中定义它时,这意味着什么?

C++ 类 - 我的程序有什么问题?

c++ - 如何在运行时将信息传递给线程?

c++ - 使用 C++ 开始 Windows GUI 应用程序开发

css - 在 VS 中发布网站时 @import "theme.css"不起作用

c++ - 使用 unix 终端运行 c++ 程序

visual-studio - 应如何管理共享彼此代码的 SharePoint Visual Studio 项目?

c++ - 通过知道变量的名称来更改变量的值