首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

帮忙。该怎么处理

2012-03-11 
帮忙。。class String{语句块;private:int lengthchar *sPtr}const String &String::operator+(const Str

帮忙。。
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位置开始啊

热点排行