#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
using namespace std;
class Teacher
{
public:
Teacher(string info)
{
this->info = info;
cout << "已经发生了构造" << endl;
}
~Teacher(){
cout << info<< " 已经发生了析构" << endl;
}
private:
string info;
};
int main()
{
vector *vec_Teacher = new vector;
Teacher t1("t1");
Teacher t2("t2");
vec_Teacher->push_back(t1);
vec_Teacher->push_back(t2);//执行到这一句的时候t1已经析构过一次了,析构的原因是因为值传递语义,在函数体内c(push_back)copy了一份
delete vec_Teacher;//问题是为什么这里只发生了一次t2的析构
//在这一步之后不会发生析构,也就是说传入指针的话其实并不会调用析构
system("pause");
return 0;
}
我的问题是,为什么发生了两次t1的析构,一次t2的析构