浅拷贝释放了两次指针变量却没有报错,这是为什么?不是说应该改为深拷贝构造函数么?
#include <iostream>#include<cstdlib>
using namespace std;
class Square
{
public:
Square(int len)
{
length=(int *)malloc(sizeof(int)); //指针变量的开辟
*length=len;
}
void setLength(int len)
{
*length=len;
}
int area()
{
return *length * *length;
}
~Square()
{
free(length); //释放了两次指针变量却没有报错,这是为什么?不是说应该改为深拷贝构造函数么?
length=NULL;
}
private:
int *length;
};
int main()
{
Square cube1(3);
Square cube2(cube1);
cout<<cube1.area()<<endl;
cout<<cube2.area()<<endl;
//cube1和cube2对象的析构需要释放两次length,为什么没有报错?
return 0;
}