c++ - 当您在范围内创建新对象并退出时会发生什么

标签 c++

如果您在函数内创建任何类的对象并将其放入 vector 中,当您退出该函数时该对象会发生什么情况?它被摧毁了?如果是,为什么?它不应该,因为我们有一个引用该对象的 vector ,稍后将在代码中使用...

void class::foo(){
  //this class object has a private vector called 've'
  ve.push_back(aNotherClass(somearg));
  //watever
}//exit
void class::foo2(){
  aNotherClass an = ve.pop_back(); //example code not sure if it works.
  cout << an.getSomeAtrribute() << endl;
  //will print like 432042 something like this and I'm sure it is not that value. is it '->' or '.' ?
}

最佳答案

vector.push_back 复制参数。您创建的本地对象将被销毁,但 vector 将保留一个拷贝。但是,如果该拷贝只是指针的拷贝,那么您就有麻烦了。

关于c++ - 当您在范围内创建新对象并退出时会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36496926/

相关文章:

c++ - 使用 strlen() 时“未在此范围内声明”

c++ - 从函数隐式转换为函数指针?

c++ - 如何使用距离公式用纯色填充我的圆圈?

C++ 多维数组生成段错误?

c++ - 没有光照计算时我应该忽略顶点法线吗?

c++ - 删除通过 ExtTextOut 函数绘制的文本

c++ - 有没有办法递归地使用类模板参数推导指南? (图灵完备了吗)

c++ - Borland C++ Builder 5 - 通过 Escape 键取消不起作用

c++ - 将 Mat 压缩成 Jpeg 并将结果存入内存

c++ - 设置 void * 指针等于一个整数