class Unit
{
public:
Unit();
Unit(int id);
~Unit();
private:
int id = -1;
};
Unit::Unit()
{
}
Unit::Unit(int _id) :id(_id){
printf("Unit construction. id=%d\n", id);
}
Unit::~Unit()
{
printf("Unit destruction. id=%d\n", id);
}
1、如果容器中保存了对象指针,则要在清除容器前手动删除指针,否则就会内存泄露。
std::vector<Unit*> units;
units.reserve(100);
for (int i=0;i<3;++i)
{
units.push_back(new Unit(i));
}
for (Unit* ptr:units)
{
delete ptr;
ptr = nullptr;
}
2、如果容器中保存了对象,存在多次复制的问题。建议存储指针。