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

c++重载+运算符实现两个字符串连接遇到的有关问题

2013-09-05 
c++重载+运算符实现两个字符串连接遇到的问题C++String类[解决办法]当函数返回的时候,是赋值返回值,然后释

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);
}


就可以了

热点排行