相信很多人跟我一样,string用了不下几千几万次,但是真的让你去实现这个类,不见得马上能写出来吧,今天被问到这个类的实现,还是懵了一会,不多说,我的实现代码如下:
class MyString
{
public:
MyString(const char* str = NULL);
MyString(const MyString& str);
MyString& operator = (const MyString& str);
~MyString()
{
delete[] m_data;
}
private:
char* m_data;
};
MyString::MyString(const char* str)
{
if (str == NULL)
{
m_data = new char[1];
if (m_data == NULL)
{
exit(1);
}
m_data[0] = '\0';
}
else
{
int iLenth = strlen(str);
m_data = new char[iLenth + 1];
if (m_data == NULL)
{
exit(1);
}
strcpy(m_data, str);
}
}
MyString::MyString(const MyString& other)
{
int iLenth = strlen(other.m_data);
m_data = new char[iLenth + 1];
if (m_data == NULL)
{
exit(1);
}
strcpy(m_data, other.m_data);
}
MyString& MyString::operator=(const MyString& other)
{
if (this == &other)
{
return *this;
}
delete[] m_data;
int iLenth = strlen(other.m_data);
m_data = new char[iLenth + 1];
if (m_data == NULL)
{
exit(1);
}
strcpy(m_data, other.m_data);
return *this;
}