class String
{
public:
//默认构造函数
String(const char* p = nullptr);
//拷贝构造函数
String(const String& str);
//析构函数
~String();
//赋值运算符
String& operator=(const String &str);
private:
char *m_Data = nullptr;
int m_iSize;
};
//构造函数
String::String(const char *p)
{
if (nullptr == p)
{
m_Data = new char[1];
m_Data[0] = '\0';
m_iSize = 0;
}
else
{
m_iSize = strlen(p); //计算字符串的长度
m_Data = new char[m_iSize + 1];
strcpy(m_Data, p);
}
}
//拷贝构造函数
String::String(const String& str)
{
m_iSize = str.m_iSize;
m_Data = new char[m_iSize + 1];
strcpy(m_Data, str.m_Data);
}
//析构函数
String::~String()
{
if (nullptr != m_Data)
{
delete[] m_Data;
m_Data = nullptr;
}
}
//赋值运算符
String& String::operator=(const String& str)
{
if (this == &str)
return *this;
delete[] m_Data;
m_iSize = strlen(str.m_Data);
m_Data = new char[m_iSize + 1];
strcpy(m_Data, str.m_Data);
return *this;
}