输出语句触发断点怎么破?

shenhuazhong 2017-04-29 10:51:33
这个程序运行有时候正常运行,有时候就意外停止,意外停止的时候最后一行输出就输出不出来,我调试的时候也是,有时候正常,有时候在最后一行的输出语句那里触发断点。为什么输出语句会出现问题呢?
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string.h>
using namespace std;

class mystring
{
private:
char *str;
public:
mystring(char*a = "0")
{
str = new char[100];
strcpy(str, a);
}
friend mystring &operator+(mystring &s1, mystring &s2);
int operator>(mystring &s);
void show()
{
cout << str << endl;
}
};
mystring &operator+(mystring &s1, mystring &s2)
{
char*b = new char(strlen(s1.str) + 1);
strcpy(b, s1.str);
strcat(s1.str, s2.str);
mystring a;
strcpy(a.str, s1.str);
strcpy(s1.str, b);
return a;
}

int mystring::operator>(mystring &s)
{
if (strcmp(str, s.str)) return 1;
else return 0;
}

int main(void)
{
char in1[50], in2[50];
cin.getline(in1, 50);
cin.getline(in2, 50);
mystring s1(in1), s2(in2);
mystring s3;
s3 = s1 + s2;
s1.show();
s2.show();
s3.show();
int z = (s1 > s2);
cout << z <<'\n';
return 0;
}
...全文
242 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 版主 2017-04-30
  • 打赏
  • 举报
回复
mystring &operator+(mystring &s1, mystring &s2) 这个函数你返回了一个局部变量的引用 局部变量在函数运行完就销毁了,故导致出错
幻夢之葉 2017-04-30
  • 打赏
  • 举报
回复 1
mystring &operator+(mystring &s1, mystring &s2) 返回了一个局部变量的引用,最好也声明拷贝构造函数和赋值构造函数以及析构函数,里面实现动态内存的管理

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧