SeqList& operator=(const SeqList& seq)
{
if (this != &seq)
{
maxsize = seq.maxsize;
cursize = seq.cursize;
memcpy(data, seq.data, sizeof(int) * cursize);
}
return *this;
}
在if语句中我知道哪个判断语句要说的是判断调用这个函数的对象以及参数seq是否相等 那么this是个类的指针 哪个引用是个别名 我觉得这玩意类型都对不上号 这玩意是怎么实现比较的
&seq
是取seq对象的地址,再和this
指针比较。如果两个对象地址相同,说明是同一个对象,就没必要赋值,否则把seq
对象的数据拷贝到这个对象里
不写这个有时会出现非常严重的错误
比如你有个类
class A{
char* seg;
public:
A(){//构造函数开辟内存
seg=new char[10];
}
~A(){//析构函数删除内存
delete []seg;
}
A& operator=(const A& rh)
{
赋值之前一般要把自己 的内存删除,再把对方的内存靠过来
如果不做判断,如果这时 A a1; a1=a1; 将会发生什么?
delete []seg;
seg=new char..
strcpy(seg,rh.seg);
}
}