关于类中重载=号运算符
在一个需要深度copy的类中, 重载赋值运算符第一步是使用delete[]释放这些数据 如:
class People
{
char * name;
}
构造函数不写了
People & People::operator= ( const People & P1)
{
if(*this==P1){
return *this;
}
delete[] name; ////////.................*
int len;
len=strlen(P1.name);
name=new char[len+1];
strcpy(name,P1.name);
return *this;
}
int main()
{
People P1;
People P2=P1; ////问题在这里: P2还不存在 .......* 的delete 不是要出错了??
}
c++
[解决办法]
People P2=P1;
调用复制构造函数,不是operator=
[解决办法]