#include<iostream>
#include<string>
using namespace std;
class Mystring
{
private:
char *m_buf;
public:
Mystring(char *p=""):m_buf(p)
{
this->m_buf=new char[strlen(p)+1];
strcpy(m_buf,p);
}
Mystring(const Mystring &s)
{
m_buf=new char[strlen(s.m_buf)+1];
strcpy(m_buf,s.m_buf);
}
~Mystring()
{
delete []m_buf;
}
void show()const;
int Getlength()const;
Mystring & operator=(const Mystring &s);
Mystring operator+(const Mystring &s);
//ostream & operator<<(ostream &c);
char operator [](int i);
};
char Mystring::operator [](int i)
{
return m_buf[i];
}
void Mystring::show()const
{
cout<<this->m_buf<<endl;
}
int Mystring::Getlength()const
{
return strlen(this->m_buf);
}
/*ostream & Mystring:: operator<<(ostream &c)
{
c<<this->m_buf;
return c;
}*/
Mystring & Mystring::operator=(const Mystring &s)
{
delete []m_buf;
m_buf=new char[s.Getlength()+1];
strcpy(m_buf,s.m_buf);
return *this;
}
Mystring Mystring::operator+(const Mystring &s)
{
//delete []m_buf;
Mystring r;
delete []r.m_buf;
r.m_buf=new char[s.Getlength()+this->Getlength()+1];
strcpy(r.m_buf,this->m_buf);
strcat(r.m_buf,s.m_buf);
return r;
}
void main()
{
Mystring m("hello");
Mystring k("abc");
Mystring f=m+k;
//m.Getlength();
//cout<<m.Getlength()<<endl;//测试用途
//m.Copy(k);
f.show();
m=k;
m.show();
int i;
for(i=0;i<f.Getlength();i++)
{
cout<<f[i]<<endl;
}
}