关于STL中容器的发现

在写程序的时候用了Vector容器,它是属于某一个类的成员变量,在成员函数中加入其他类的对象的时候,神奇的发现加入的变量不会在其生命周期不会被析构

如下面的一些简单的小例子

class AAA
{
public:
AAA();
virtual ~AAA();
void SetData(int m);
public:
int m;

};


AAA::AAA()
{

}

AAA::~AAA()
{

}


void AAA::SetData(int m)
{
this->m=m;
}

class DD
{
public:
DD();
virtual ~DD();
void AddMember();
void PrintAddress();
public:
vector<AAA > v;

};


DD::DD()
{

}

DD::~DD()
{

}

void DD::AddMember()
{
//我们的对象
AAA data;
data.SetData(1);
cout<<"local data address is "<<&data<<endl;
//对象插入到vector后面
v.push_back(data);
}
void DD::PrintAddress()
{
vector<AAA>::iterator it;
for (it=v.begin();it!=v.end();it++)
cout<<"vector data address is "<<&(*it)<<endl;
}

int main()
{

DD d;
d.AddMember();
d.PrintAddress();

return 0;
}

运行结果:

 

看文中实验的结果你回去发现原来STL中的容器是深拷贝 平时咱们用的对象对组只是浅拷贝

原文地址:https://www.cnblogs.com/OneDream/p/3072506.html