65,210
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <cstring>
using namespace std;
class mystring;
mystring operator+(mystring& string1, mystring& string2);
ostream& operator <<(ostream& outs, mystring& string);
class mystring
{
public:
mystring(const char *s):max(strlen(s))
{
str=new char[strlen(s)+1];
strcpy(str,s);
}
mystring(const mystring& my)
{
str=new char[strlen(my.str)+1];
strcpy(str,my.str);
}
mystring& operator=(const mystring& a)
{
if(this==&a)
return *this;
delete []str;
str=new char[strlen(a.str+1)];
strcpy(str,a.str);
return *this;
}
mystring():max(100)
{
str=new char[max+1];
str[0]='\0';
}
~mystring()
{
delete [] str;
}
friend mystring operator+(mystring& string1, mystring& string2);
friend ostream& operator <<(ostream& outs, mystring& string);
private:
char *str;
int max;
};
mystring operator+(mystring& string1, mystring& string2)
{
char* str1=new char[strlen(string1.str)+strlen(string2.str)+1];
strcpy(str1,string1.str);
strcat(str1,string2.str);
mystring temp(str1);
delete str1;
return temp;
}
ostream& operator <<(ostream& outs, mystring& string)
{
outs <<string.str;
return outs;
}
int main()
{
mystring a,b("yang"),c("jie");
a=b+c;
cout <<a;
return 0;
}