大侠们帮帮忙
#include "iostream.h"
#include "string"
class String;
ostream& operator <<(ostream&,String &);
class String
{
private:
char *mychar;
int len;
public:
String(char *x="")
{
mychar=x;
len=strlen(mychar);
}
String operator += (String &b)
{
strcat(mychar,b.mychar);
cout<<mychar<<endl;
return *this;
}
String operator + (String &);
friend bool operator ==(String &,String &);
friend ostream& operator <<(ostream&,String &);
};
String String::operator + (String &b)
{
strcpy(mychar,b.mychar);
return String (mychar);
}
bool operator ==(String &a,String &b)
{
if (a.len!=b.len)
return 0;
if (strcmp(a.mychar,b.mychar)==0)
return 1;
else return 0;
}
ostream& operator <<(ostream & out,String &b)
{
out<<b.mychar<<endl<<b.len<<endl;
return out;
}
int main()
{
String str1("abc"),str2("cde");
if(str1==str2)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
cout<<(str1+str2);
return 0;
}
运行时总是错误,各位高手指点下是哪里出问题了
[解决办法]
给LZ一个建议,你做好类里面的指针成员自己new地址空间,你这里本身只是用外面字符串的地址,像重载的+在你这里很多时候就越界了。
[解决办法]