函数内部局部变量的生存期是如何延长的



请参阅下面的代码。v1是函数内部的局部变量。因此,在离开这个函数之后,这个变量应该被杀死。因此,move构造函数应该在主函数中遇到问题。但实际上结果恰恰相反。在主功能中,我可以看到v1的内容。

#include <iostream>
#include <vector>
using namespace std;
void my_fn(vector<vector<int>> & v) {
vector<int> v1 = {1, 2, 3};
v.push_back(move(v1));
cout << " " << endl;
}
int main(){
vector<vector<int>>  v;
my_fn(v);
for(const auto & e:v)
for (const auto e1: e)
cout << e1 << endl;
return 0;
}

当您将v1的内容移动到v时,v1尚未被销毁,因为这发生在函数my_fn的右括号之前。结果,v1的内容被推送到作为参考的v中。v1的范围没有扩展,只是复制了它的内容。

相关内容

  • 没有找到相关文章

最新更新