#include <iostream>
class String
{
public:
String();
String(const char* pchData);
String(const String &StringOther);
String & operator = (const String &StringOther);
~ String();
void print();
private:
char *m_pchString;
};
String::String()
{
m_pchString = NULL;
}
String::String(const char* pchData)
{
if((NULL == pchData) ||
(0 == strlen(pchData)))
{
m_pchString = new char [1];
*m_pchString = 0;
}
else
{
int len = strlen(pchData)+1;
m_pchString = new char[len];
memset(m_pchString,0,len);
strncpy(m_pchString,pchData,len - 1);
}
}
void String::print()
{
if(m_pchString)
{
printf("\n[%s]\n",m_pchString);
}
}
String::String(const String & StringOther)
{
if(NULL == StringOther.m_pchString)
{
m_pchString = new char [1];
if(m_pchString )
{
*m_pchString = 0;
}
else
{
//print error
}
}
else
{
int len = strlen(StringOther.m_pchString)+1;
m_pchString = new char[len];
memset(m_pchString,0,len);
strncpy(m_pchString,StringOther.m_pchString,len - 1);
}
}
String & String::operator = (const String &StringOther)
{
if(this == &StringOther)
{
printf("\nmyself\n");
return *this;
}
if(NULL != m_pchString)
{
delete m_pchString;
m_pchString= NULL;
}
if(NULL == StringOther.m_pchString)
{
m_pchString = new char [1];
if(m_pchString )
{
*m_pchString = 0;
}
else
{
//print error
}
}
else
{
int len = strlen(StringOther.m_pchString)+1;
m_pchString = new char[len];
if(m_pchString)
{
memset(m_pchString,0,len);
strncpy(m_pchString,StringOther.m_pchString,len - 1);
}
else
{
//print error
}
}
return *this;
}
String::~String()
{
if(m_pchString != NULL)
{
delete [] m_pchString;
}
}
int main()
{
String a("11111");
a.print();
a = a;
String b(a);
b.print();
return 0;
}