正确答案:
p2:pen
pl:pen
p3:pen
p4:bookpen
String &operator=(const String &r)
{
if(&r==this)///////////1.为什么要判断这个///////问题主要是出现在这里
{
return *this;
}
////2.如果没有这句话
//效果如下
p2:pen
pl:pen
p3:pen
p4:pen
//3.如果判断是否为空 第四行直接不输出
else
{
int len=strlen(r.ptr);
ptr=new char[len+1];
strcpy(ptr,r.ptr);
return *this;}
}
String &operator+=(String &r)
{
char *kk=ptr;
ptr=new char[strlen(ptr)+strlen(r.ptr)+1];/////开辟新数组来储存
strcpy(ptr,kk);
strcat(ptr,r.ptr);
delete[] kk;//释放
return *this;
}
};//主函数
int main( )
{ String p1("book"), p2("pen"),p3("good"),p4;
p4 = p4 = p1 ;
p3 = p1 = p2;
cout<<"p2:";
p2.print();
cout<<"p1:"<<p1;
cout<<"p3:"<<p3;
p4+=p3;
cout<<"p4:"<<p4;
return 0;
}
求解