含指针的类,存在深拷贝和浅拷贝问题
下面示例显示,
类A析构函数进行指针内存的释放,而不重载相应的拷贝构造函数,
局部变量析构的时候会释放成员变量f对应内存,导致mAmap结构中数据的无效。
所以需要重写A的拷贝构造函数,进行深拷贝。当然具体情况以类定位为依据。
class A
{
public:
A()
{
f = new float(0.34);
}
A(const A& a)
{
f = new float(*a.f);
//f = a.f;
}
A& operator = (const A& a)
{
f = a.f;
return *this;
}
~A()
{
delete f;
f = NULL;
}
float* f;
};
void main ()
{
typedef std::map<std::string,A>AMap;
AMap mAmap;
{
A a;
mAmap.insert(AMap::value_type("aa",a));
}
}