深拷贝重载 = 运算符,避免释放空间时,两个指针重复释放内存导致出错。
#include<iostream>
using namespace std;
class A
{
friend ostream& operator<<(ostream& cout,A a1);
int *a;
public:
A(int x)
{
a= new int(x);
}
A& operator=(A& a1)
{
if(a!=NULL)
{
delete a;
a=NULL;
}
a = new int(*a1.a);
return *this;
}
~A()
{
if(a!=NULL)
{
delete a;
}
}
};
ostream& operator<<(ostream& cout,A a1)
{
cout<<*a1.a;
}
int main()
{
A a1(5);
A a2(6);
a1=a2;
cout<<a1;
}