#ifndef LIST_OPRATOR
#define LIST_OPRATOR
#include
using namespace std;
class Complex
{
private:
int a;
char* p;
public:
void operator=(Complex* c2);
Complex(const Complex* c2);
Complex(int a,char* m);
~Complex()
{
cout<<"析构"<<" "<<p<<endl;
delete p;
p=NULL;//避免野指针
a=0;
};
};
#endif
Complex::Complex(int a,char* m)
{
this->a=a;
p=new char[strlen(m)+1];
strcpy(p,m);
}
Complex::Complex(const Complex* c2)
{
p=new char[strlen(c2->p)+1];
if(c2->p!=NULL)
{
strcpy(p,c2->p);
}
a=c2->a;
}
void Complex::operator=(Complex* c2)
{
if(p!=NULL)
{
delete p;
p=NULL; //避免野指针
}
if(c2->p!=NULL)
{
p=new char[strlen(c2->p)+1];
strcpy(p,c2->p);
}
a=c2->a;
}
void main993()
{
Complex* c1=new Complex(1,"abcd");
Complex* c2=c1;
Complex* c3=new Complex(2,"lkjh");
c2=c3;
delete c1;
delete c2;
delete c3;
system("pause");
}
void main()
{
main993();
}