为什么const ref返回的vector <int>变量不起作用</int>

时间:2014-04-28 15:23:19

标签: c++ vector const ref

这是我的功能:

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的答案并没有帮助我理解这一点。

谢谢。

1 个答案:

答案 0 :(得分:7)

您正在返回对本地对象的引用。这是未定义的行为。相反,通过副本返回,由于RVO (return value optimization),该副本将被删除。

std::vector<int> getVInt(){
    std::vector<int> vint;
    // …
    return vint;
}