#include <iostream>
#include <string.h>
#include <cstring>
using namespace std;
class mystring
{
public:
mystring(const char *p = NULL)
{
if (p != NULL)
{
this->str = new char[strlen(p) + 1];
strcpy(str, p);
}
else
{
str = new char[1];
str = NULL;
}
}
~mystring()
{
str = NULL;
}
bool operator==(const mystring &s)
{
if(this->str == s.str)
return true;
else
return false;
}
mystring &operator+(const mystring &s)
{
strcat(this->str,s.str);
return *this;
}
ostream &operator<<(ostream &out)const
{
if (str != NULL)
{
out << str;
}
return out;
}
void operator=(mystring &s)
{
if(this != &s)
{
delete[]this->str;
this->str = new char[strlen(s.str)+1];
this->str = s.str;
}
return ;
}
private:
char *str;
};
ostream &operator<<(ostream &out, const mystring &s)
{
s << out;
return out;
}
int main()
{
mystring s1("hello");
mystring s2(" world");
cout << s1+s2 << endl;
s1 = s2;
cout<<s1<<endl;
cout<<s2<<endl;
if(s1 == s2)
{
cout<<"s1 == s2"<<endl;
}
else
{
cout<<"s1 != s2"<<endl;
}
return 0;
}