Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;-临时变量及其生存期_C++_Qt_Variables_Destructor_Lifetime - Fatal编程技术网

C++ C++;-临时变量及其生存期

C++ C++;-临时变量及其生存期,c++,qt,variables,destructor,lifetime,C++,Qt,Variables,Destructor,Lifetime,此问题可被视为以下问题的后续问题: Qt容器支持类流的初始化语法。现在,当我编写下面的代码时,我的QVector在赋值之后立即被销毁,引用变得悬空 const QVector<QString>& v = QVector<QString>() << "X" << "Y" << "Z"; const QVector&v=QVector()只有当临时文件绑定到const引用时,它的生存期才会延长: const QVector<

此问题可被视为以下问题的后续问题:

Qt
容器支持类流的
初始化语法。现在,当我编写下面的代码时,我的
QVector
在赋值之后立即被销毁,引用变得悬空

const QVector<QString>& v = QVector<QString>() << "X" << "Y" << "Z";

const QVector&v=QVector()只有当临时文件绑定到const引用时,它的生存期才会延长:

const QVector<QString>& v = QVector<QString>();
常量QVector&v=QVector();
但是,在您的代码中,您没有将临时文件绑定到任何东西。相反,您正在调用(临时的)成员函数,该函数返回(临时的)引用。此函数调用的结果不再是一个临时对象,而只是一个普通引用。原始临时对象在其出现的完整表达式结束时过期,引用
v
变为悬空

const QVector<QString>& v = QVector<QString>() << "X" << "Y" << "Z";

(在新的C++中,有可能通过Ruffic合格的成员函数来禁止这种“意外”,也就是说,您可以<代码>删除/> > <代码>的“RValm版本”,我猜这可能是由于…你大致上是正确的,但技术上的解释是右值正在衰减为左值。我认为,

临时
绑定到运算符返回的引用。我知道你的问题满足学术好奇心,但实际上,你可以这样做:
const QVector v=QVector()@Robᵩ : 这里有一些不纯粹是学术性的微妙之处,例如(auto-foo:QVector()的