读书人

c++重载+运算符实现两个字符串连接遇到

发布时间: 2013-09-05 16:02:06 作者: rapoo

c++重载+运算符实现两个字符串连接遇到的问题
C++ String 类
[解决办法]
当函数返回的时候,是赋值返回值,然后释放所有局部变量

在你重载+的时候,返回值的时候其实返回的不是temp,而是temp的副本,也就是字符串被析构过一次。
debug的时候,return那里按F11可以看见是调用到析构函数里面去的,这也就是为什么你的字符串不见了
[解决办法]
楼主需要知道,你重载的+运算符函数,返回值是值拷贝

需要自定义的拷贝构造函数实现“深拷贝”,否则的话,系统使用默认的浅拷贝,这对有指针成员的类来说,是存在问题的
你加上:

 String(const String &newstr)

{  
int length1 = strlen(newstr.s);
s=new char[length1+1];


length = length1;
strcpy(s,newstr.s);
}


就可以了

读书人网 >C++

热点推荐