【发布时间】:2021-05-12 00:34:16
【问题描述】:
QVector和operator=有4个例子:
auto value1 = (QVector<int>() << 1)[0]; //value is 1 (correct)
auto &value2 = (QVector<int>() << 1)[0]; //value is -572662307 (incorrect)
const auto value3 = (QVector<int>() << 1)[0]; //value is 1 (correct)
const auto& value4 = (QVector<int>() << 1)[0]; //value is -572662307 (incorrect)
那么,请您更清楚地解释这些示例吗?据我所知,这是关于“深拷贝”的东西,它是由operator= 之一创建的,但对我来说并不完全清楚。
【问题讨论】:
-
它与深拷贝或
operator=无关——您引用了生命周期已结束的对象。