帮忙。。
class String
{
语句块;
private:
int length;
char *sPtr;
}
const String &String::operator+=(const String &right)
{
size_t newLength=length+right.length;
char *tempPtr=new char[newLength+1];
strcpy(tempPtr,sPtr);
strcpy(tempPtr+length,right.sPtr);//这里第一个参数为什么后边还要+length???
delete[] sPtr;
sPtr=tempPtr;
length=newLength;
return *this;
}
tempPtr不是已经分配了新的长度了么?
[解决办法]
它分配了两个length加1的空间啊
strcpy(tempPtr,sPtr); // 将sPtr赋到tempPtr起始的位置
strcpy(tempPtr+length,right.sPtr);//这里第一个参数为什么后边还要+length???
//将right.sPtr赋到tempPtr+length起始的位置
[解决办法]
应该是指针的偏移量吧.
tempPtr的首地址再向右偏移length的长度..
刚好就是sPtr本身的长度..
[解决办法]
是+=操作,把两个字符串连起来
[解决办法]
是合并操作,后面的字符串肯定要从 length位置开始啊