小编use*_*028的帖子

引用C++中函数返回的向量元素

有人可以验证以下是BUG,并解释原因吗?我想我知道,但我不清楚细节.(我的实际问题涉及枚举的向量,而不是整数,但我认为它不重要.)假设我有以下代码:

std::vector<int> f (void) {
  std::vector<int> v;
  v.push_back(5);
  return v;
}

void g (void) {
  const int &myIntRef = f()[0];
  std::cout << myIntRef << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我是否正确myIntRef立即是一个悬空引用,因为f的返回值在堆栈中无处保存?

此外,以下是有效的修复,还是它仍然是一个错误?

  const int myIntCopy = f()[0];  // copy, not a reference
Run Code Online (Sandbox Code Playgroud)

换句话说,是否可以复制第0个元素之前抛弃f()的返回结果?

c++ memory-management return reference return-by-value

7
推荐指数
2
解决办法
1755
查看次数