如果在函数内创建任何类的对象并将其推入向量,当您退出该函数时对象会发生什么?它被摧毁了?如果是,为什么?它不应该因为我们有一个向量引用该对象将在稍后的代码中使用...
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 '.' ?
}
答案 0 :(得分:2)
vector.push_back
制作参数的副本。您创建的本地对象将被销毁,但该向量将保留一个副本。但是,如果该副本只是指针的副本,那么您就遇到了麻烦。
答案 1 :(得分:1)
在堆栈上创建的本地对象(不使用new运算符)将被销毁。它是语言规范。
从另一方面来说,矢量可以以创建自己的对象副本的方式实现。因此允许您在退出函数后保留数据事件。