类的运算符重载问题
出现非常诡异的问题,下面的析构函数一旦删除,那么文件运行就正常,否则就报错!!!不知道是什么情况,请大神帮忙!!!
#include<iostream.h>
#include<string.h>
class String
{
char *str;
int len;
public:
String(char *s)//构造函数
{
len=strlen(s);
str=new char [len+1];
strcpy(str,s);
}
String()
{
str=NULL;
len=0;
}
~String()//析构函数
{ if (str) delete []str;}
String &operator=(String&s)//等号运算符重载
{
if(this==&s) return *this;
if (str) delete []str;
if(s.str)
{
len=strlen(s.str);
str=new char [len+1];
strcpy(str,s.str);
}
else
{
str=NULL;
len=0;
}
return *this;
}
void show()//显示函数
{
cout<<"字符串为:"<<endl;
cout<<str;
}
void set(char *s)
{
delete []str;
len=strlen(s);
str=new char[len+1];
strcpy(str,s);
}
friend String operator+(String &,String &);//友元函数 +重载函数
};
String operator+(String &s1,String &s2)
{
String temp;
temp.len=s1.len+s2.len;
temp.str=new char [temp.len+1];
strcpy(temp.str,s1.str);
strcat(temp.str,s2.str);
return temp;
}
void main()
{
String str1("hello"),str2("shanghai"),str3;
str3=str1+str2;
str3.show();
}