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

初学c++,写了一个代码,出现堆破坏有关问题。不懂

2013-07-21 
初学c++,写了一个代码,出现堆破坏问题。。不懂。#include iostream#include cstringusing namespace std

初学c++,写了一个代码,出现堆破坏问题。。不懂。
#include <iostream>
#include <cstring>
using namespace std;
class String
{
public:
String(char*m);
String operator+(String s);
String & operator=(String s);
~String()
{delete []str;};
void print();
private:
char *str;
};
String::String(char*m)
{
str=new char[20];
strcpy_s(str,20,m);
}
String String::operator+(String s)
{
strcat_s(str,50,s.str);
return *this;
}
String & String::operator=(String s)
{
str=s.str;
return *this;
}
void String::print()
{
cout<<str<<endl;
}
int main()
{
char*a,*b;
a="Teacher",b="Student";
String s1(a),s2(b);
s1.print();
s2.print();
s1=s1+s2;
s1.print();
system ("pause");
}

求各位大大帮忙。。。。大大感谢了。。
[解决办法]
你的operator=这个函数中,应该复制字符串的内容,而不是复制指针本身
[解决办法]
str=new char[20];
String String::operator+(String s)
{
strcat_s(str,50,s.str);//str只有20个字节,这里不安全。将50改为20
return *this;
}

operator= 如楼上问题。

热点排行