关于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中的容器是深拷贝 平时咱们用的对象对组只是浅拷贝
posted on 2013-05-11 10:53 AAAAAApple 阅读(137) 评论(0) 编辑 收藏 举报