重载“=”结合自由存储区 遇到的问题
class SimpleCircle
{
public:
SimpleCircle();
SimpleCircle(int);
~SimlpeCircle();
void SetRadius(int);
int GetRadius();
SimpleCircle& operator = (const SimpleCircle&)
private:
int *itsRadius;
};
SimpleCircle& SimpleCircle(const SimpleCirecle& rhs)
{
if(this == &rhs)
reurn *this;
delete itsRadius;
itsRadius = new int;
*itsRadius = rhs.GetRadius();
}
问题一 :1.为什么要判断this指针与rhs是否同指一个内存块?书上说的是防止由于“a=a”而导致的程序崩溃。请解释哈
程序是怎么崩溃的??但是c++中,eg:int a; a = a;是合法的啊?
2.如果把SimepleCircle成员变量改为int itsRadius;是不是可以不用判断??也就是说是不是自由存储区扰的祸?
问题二 :先delete itsRadius(这是删去其构造函数申请的自由存储区);然后又用new申请一块内存。。。这样做是何必呢?感觉多此一举。这两句话能不能省?
谢谢、、、、、