这是我的功能:
const vector<int>& getVInt(){
vector<int> vint;
(...)
return vint;
}
而且,
vector<int> x = getVInt();
返回:
在抛出一个实例后终止调用 'std :: out_of_range'
what():vector :: _ M_range_check
和
const vector<int>& x = getVInt();
什么都不返回(一个大小不同于0但当我使用x.at(i)时没有值的向量)。
我在论坛中寻找但是关于temprorary和const ref的答案并没有帮助我理解这一点。
谢谢。
答案 0 :(得分:7)
您正在返回对本地对象的引用。这是未定义的行为。相反,通过副本返回,由于RVO (return value optimization),该副本将被删除。
std::vector<int> getVInt(){
std::vector<int> vint;
// …
return vint;
}